尝试让物体朝给定位置发射并穿过给定位置。就像一颗子弹射向鼠标位置一样,我不希望它停在鼠标上(这就是现在正在发生的情况)。
下面是我到目前为止所拥有的,有没有像 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));
}
最佳答案
我建议使用刚体组件,然后沿该方向施加力(我猜是禁用重力)。
按照你现在的方式,你应该可以使用它
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 为您提供自上次调用 Update 函数以来的毫秒数(您希望将其放在这里,以便对象移动相同的方向)不同帧率下的速度),speed只是一个常数来调整速度。
关于vector - 在 Unity 4.3 中将 2d 对象移向并穿过某个位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20457240/