-
Пожалуйста объясните на своём опыте. Как в ваших играх, Происходит взаимодействием с игровым миром. Например дана карта, на карте зверек. Игрок клацает на него и затем клацает на необходимое место перемещения зверька. Так как вообще сделать взаимодействие с игровым миром и мышью.
Я сделал так. Экран имеет разрешение 800х600 и я клацаю по зверьку и проверяю клик на столкновение с помощью функции:
function PointCollision(x1, y1, w1, h1, x2, y2, w2, h2 : integer) : boolean; var r1, r2 : TRect; begin
r1.Left := x1; r1.Top := y1; r1.Right := x1 + w1; r1.Bottom := y1 + h1; r2.Left := x2; r2.Top := y2; r2.Right := x2 + w2; r2.Bottom := y2 + h2;
Result := RectCollision(r1, r2); end;
Чего то я думаю что это бредовая идея, что она зависит от конкретного места на екране. А если скролер или другое разрешение екрана. То будет сложно применить такой способ. Подскажите как быть в такой ситуации. Как вы делали в своих проектах?
-
screen coordinates --> map(world) coordinates --> collision checking. после чего на разрешение, положение и прочее просто наплевать.
-
Чегото не понял. так я правильно делаю или нет.
-
>[2] rsy (17.01.08 15:14) окуда нам знать? по приведённому тобой коду видно, что проверяются какие-то координаты. что это за координаты, откуда они взялись, зачем и ты пы — это только Аллах и телепаты знают. в Аллаза я не верю, а телепатов уволил.
-
Всё зависит от того 3D или 2D твоя игра
-
>[4] Darkmoon (17.01.08 16:40) совершенно не зависит.
-
я имел в виду то что для 2D игр подойдет простое попадание мышки в прямоугольник начинающийся в точке нахождения объекта со сторонами равными длинне и ширине объекта, а в 3D такое уже не катит.
-
>[6] Darkmoon (17.01.08 18:14) в той же изометрии вполне себе катит частенько. ну, не в прямоугольник, а в параллелограм/ромб. фиг ли разницы?
-
Ну для этого в дирексте есть специальные функции(непомню какие) при помощи их делать легче.
|