PDA

Просмотр полной версии : Движение в перспективе


$mival
20.03.2007, 14:46
Сразу хочу извиниться за тему, пользовался поиском. Вроде ничего нет, хотя по любому обсуждалось.
В общем требуется сделать движение игроков на игровом поле в перспективе. Возьмем к примеру одного игрока, одного соперника и поле. Игрок стоит всегда снизу экрана. Когда он передвигается по оси У, он сам стоит на месте а поле двигается у него под ногами. Само движение поля в перспективе программно не движется, а просто есть набор отрендеренных в максе картинок, которые вставлены в клип и переключается в зависимости от передвижения игрока по оси У (осуществляется стрелочками вверх/вниз). Влево/вправо же игрок сам двигается, а сцена стоит на месте. Проблема происходит когда добавляем соперника. Он стоит впереди и тут во всю используется перспектива. То есть при приближении меняется его размеры, скорость движения по Х и У. Когда мы движем игрока по У, сцена двигается (перебор кадров сцены идет) под ногами игрока вместе с соперником. Это мне непонятно как делается. Плюс ко всему ещё соперник может сам передвигаться по полю, что добавляет проблем.

etc
20.03.2007, 14:58
http://ru.wikipedia.org/wiki/%D0%9F%D0%B5%D1%80%D1%81%D0%BF%D0%B5%D0%BA%D1%82%D0%B8%D0%B2%D0%B0

iNils
20.03.2007, 15:14
Может помочь.
http://www.flasher.ru/forum/attachment.php?attachmentid=15236&d=1158784102

$mival
20.03.2007, 18:50
ага, пригодится :umnik2:
благодарю

$mival
20.03.2007, 22:21
Вот только одно осталось загадкой: изменение размеров объекта при приближении/удалении объект к/от горизонта. Это изменение нелинейно, в смысле меняется НЕ прямопропорционально расстоянию.
Т.е. есть к примеру объект, находящийся на горизонте. Мы к нему идём-идём... он сначала практически не увеличивается. Потом начинает увеличиваться все быстрее и наконец видет в 100% размере. Увеличение идет по нарастающей. Вот где бы посмотреть эту зависимость?

etc
20.03.2007, 22:43
Проведи лучи из центра к краям объекта, когда он максимально близок. Вот по этим «рельсам» он у тебя и должен ездить.

$mival
20.03.2007, 22:52
понятненько

$mival
22.03.2007, 08:01
Все-таки меня недопоняли :D

Очень наглядный пример здесь (http://irj.ru/smival/example/) (850 Кбайт).
Нарисовал рельсы, как посоветовал __etc.
Там объект движется от дальней стенки, но он движется равномерно, а должен сначала как-то тормозить а по приближению ускоряться!

etc
22.03.2007, 13:28
Так равномерно он должен двигаться в пространстве, а не так просто.

$mival
22.03.2007, 13:55
в смысле так просто?
У меня равномерно идет наращение _xscale & _yscale от 1 до 100

etc
22.03.2007, 14:27
Ну для псевдо перспективы можешь по синусу пустить, нелинейно.

iNils
22.03.2007, 14:42
Обычный 3D движок. У объекта Y константа и равна 0.

etc
22.03.2007, 15:01
Примерно так: _xscale = 100*(1/(1-z/perspective)), где z — координата z объекта, а perspective подбирается так, чтобы было похоже :)

$mival
22.03.2007, 15:57
Примерно так: _xscale = 100*(1/(1-z/perspective)), где z — координата z объекта, а perspective подбирается так, чтобы было похоже :) интересная штука. что-то вырисовывается.
А вот про "У": это как? объект всегда прилипший к верху экрана чтоли? :o

vapes
22.03.2007, 16:08
вижу у тебя трехмерное зрение не развито

etc
22.03.2007, 16:08
интересная штука. что-то вырисовывается.
А вот про "У": это как? объект всегда прилипший к верху экрана чтоли? :o
Нет, имелось ввиду в пространстве (наверное). Фиксированы X и Y.

vapes, если у тебя развито, то продемонстрируй.

$mival
22.03.2007, 16:18
вижу у тебя трехмерное зрение не развито
если б оно было не развито, то та флешка, на которую я сослался в последний раз показалась бы мне идеалом :D
Просто не хватает кое-каких знаний.

vapes
22.03.2007, 19:05
16823
сам накалякал ,впринципе должно помочь, там нету as и все изменяется прямопропорционально что будет легко для кодирования

$mival
22.03.2007, 21:15
Мдя, и после этого у меня трехмерное зрение не развито? :mosking:
У тебя рамка с человечком двигается равномерно (визуально). В реальности же она рядом с экраном движется со скоростью Х, а рядом с горизонтом (ну или противоположная от глаза стенкой комнаты в нашем случае) рамка уже имеет скорость >X по любому.

16823... там нету as и все изменяется прямопропорционально что будет легко для кодирования Читай с начала топика. У меня камера движется вдоль поля равномерно. Отсюда изменения непропорциональные, т.е. не равномерные.