Перемещение 2D-объекта к позиции и через нее в Unity 4.3

Попытка заставить объект стрелять в направлении и через заданную позицию. Подобно пуле, летящей в сторону мыши, я не хочу, чтобы она останавливалась на мыши (что и происходит сейчас).

Ниже то, что у меня есть до сих пор, есть ли такая функция, как lerp, которую я мог бы использовать?

var speed:float;
var startPoint:Vector3;
var startTime:float;
var clickedPosition:Vector3;


function Start()
{    
     startPoint = transform.position;
    startTime = Time.time;
    clickedPosition = Vector3(Input.mousePosition.x, Input.mousePosition.y, 0);
    clickedPosition = Camera.main.ScreenToWorldPoint(clickedPosition);  


}

function Update ()
{

 transform.position = Vector3.Lerp(startPoint, clickedPosition, (Time.time-startTime));

}

person tylercomp    schedule 08.12.2013    source источник


Ответы (2)


Я бы предложил использовать компонент твердого тела, а затем применить силу в направлении (при отключении гравитации, я думаю).

В том виде, в котором он у вас есть сейчас, вы, вероятно, должны заставить его работать

var speed : float;

function Start()
{    
    speed = 1000.0f; // experiment with this, might be way too fast;

    ...
}

function Update()
{
    transform.position += (clickedPosition - startPoint) * speed * Time.deltaTime;
}

(clickedPosition - startPoint) должен дать вам направление, в котором вы хотите переместить объект, Time.deltaTime дает вам миллисекунды с момента последнего вызова функции обновления (вы хотите, чтобы это было здесь, чтобы объект двигался с одинаковой скоростью на разных частота кадров), а скорость — это просто константа для регулировки скорости.

person Tom    schedule 08.12.2013
comment
спасибо, кажется близко... пуля все еще перемещается только в позицию мыши. Я надеюсь, что это пройдет. Но это не каламбур, я думаю, что это направляет меня в правильном направлении. - person tylercomp; 08.12.2013
comment
ваша проблема может заключаться в том, что точка, на которую вы нажимаете, не то, что вы думаете. может ли быть так, что объект удаляется от вас, так что кажется, что он не будет двигаться? объект должен двигаться в 2D или в 3D пространстве? - person Tom; 08.12.2013
comment
Предполагается, что он движется в двухмерном пространстве. - person tylercomp; 08.12.2013
comment
ммх хорошо, тогда попробуйте игнорировать одну ось clickedPosition, например: clickedPosition.z = 0.0f; если z - это ось, которую вы не используете, и ваш объект лежит на z = 0 - person Tom; 08.12.2013
comment
просто чтобы было ясно, clickedPosition - это не позиция, на которую вы нажимаете. Вероятно, это положение вашей мыши, когда вы запускаете игру, как в start(). - person Tom; 09.12.2013
comment
блокировка позиции z до 0 исправил это - person tylercomp; 09.12.2013

Это довольно просто. Для этого вы можете использовать функцию Vector3.Lerp. Используйте raycasting, чтобы получить положение щелчка мыши или положение касания. Затем используйте начальную и конечную позицию в функции lerp. Начальная позиция — это позиция, в которой сейчас находится игровой объект, а конечная позиция — это позиция щелчка/касания. Вы можете найти статью о том же здесь

Переместить в положение касания / щелчка — игра Контривер

person gameOne    schedule 22.10.2014