Всем доброго времени суток! За последние дни я насоздавал тем, как истинный новичок, но то ли голова не работает, то ли я ищу информацию не там, где нужно.
Продолжаю познавать мир двухмерных игр, но сегодняшний вопрос касается наверное и трёхмерных одинаково. Итак, цель:
Сделать телепорт, сохраняющий физику. У нас есть синий портал, в который с любой стороны произвольно влетает снаряд. Снаряд должен вылететь из красного портала, сохранив свои физические значение, но (это очень важно) именно по отношению к порталу из которого он выходит, а не к миру.
То есть система аналогичная тому, как это было реализовано в игре Portal.
На данный момент я сделал следующее: при попадании снаряда в портал я считываю его Velocity, затем меняю transform.position на новую позицию (переношу его на место выходного портала) и задаю его rigidBody новое ускорение, умножив transform.Forward выходного портала на модуль длины Velocity. Получается, что как бы он не влетел, вылетать он всегда будет прямо, лишь сохранив своё ускорение, но не направление.
А очень сильно хотелось бы сохранить и направление,
То есть если ориентироваться на схему: если снаряд влетает в портал под углом -125 градусов по отношения к его transform.Forward, то чтоб с таким же углом он вылетел и из выходного портала.
перепробовал все методы Quatrenion, но ничего толкового не получилось.
А очень сильно хотелось бы сохранить и направление
Не нужно умножать форвард на велосити. Сохраняй отдельно направление и отдельно скорость. Затем рассчитывай направление уже по отношению к новому порталу. X.cor.R (Prologue)
Измерять текущую скорость (пройденное расстояние за отрезок времени) в реалТайме, например в FixedUpdate() Ну а как сохранить направление думаю сам догадаешся, как вариант через localRotation. X.cor.R (Prologue)
Сначала мне показалось это очень свежей мыслью и я прям обрадовался, но потом всё снова встало на свои места: проблема в том, что снаряд не летит всегда вперёд, он управляется физикой и может быть повёрнут в любую сторону. То есть он может лететь и при этом крутиться...
А это ведь ничего не меняет. Тогда как и выше писал сохраняеш скорость и направление перемещения за последние 2 тика перед входным порталом. Пересчитать направление относительно выходного портала думаю проблем не составит. X.cor.R (Prologue)
Пересчитать направление относительно выходного портала думаю проблем не составит.
К сожалению, пока составляет... Собственно из-за этого и была создана тема. Попробую ещё подумать в этом направлении, авось осенит.
Тут проблема даже не в том, как потом пересчитать направление относительно нового портала. Скорее проблема, как его считать, относительно первого. Если просто измерять угол межу велосити и форвардом портала, то это не даст точного значения, так как угол всегда будет положительным. А больше ни одной мысли нет...