unity物品过渡动画移动到摄像机前并跟随摄像机移动

如果你需要在主摄像机附近实例化一个物品/物品过渡动画移动到附近,并且摄像机旋转镜头角度也依然能保证物品始终跟随摄像机,那么你需要先了解这个方法:

ScreenToWorldPoint(x,y,z):屏幕坐标转化为世界坐标,通常和摄像机搭配使用。x与y是2D屏幕坐标,z是深度(摄像机的z轴方向)。如图蓝色箭头为z轴。

Camera.main:这是Tag标签为Main Camera的摄像机,刚创建unity场景的时候唯一的一个摄像机就是Main Camera标签的摄像机,之后创建的摄像机默认标签都不是Main Camera。

移动过渡动画:

current = Vector3 MoveTowards(Vector3 current, Vector3 target, float maxDistanceDelta);

将当前值current往目标target方向移动;
maxDistanceDelta是最大距离增量,也就是每次移动的最大长度,可以理解为速度;
返回值是:当current值加上maxDistanceDelta的值,如果这个值超过了target,返回的就是target的值,否则返回current。

更详细的说明可以参考这个:https://blog.csdn.net/andyhebear/article/details/51818534

物品实时动画移动到摄像机前的指定位置:

private Transform m_Transform;
private  Vector3 Current;    //物品初始位置.
private  Vector3 Target;     //物品目标位置.

void Start()
{
    m_Transform = gameObject.GetComponent<Transform>();
    Current = m_Transform.position;    //初始化物品的初始位置.
}

void Update()
{
    yd();
}

/// <summary>
/// 物品往摄像机位置进行动画移动并跟随.
/// </summary>
private void yd()
{
    //初始化目标位置,目标位置为摄像机中心点前3米.
    Target = Camera.main.ScreenToWorldPoint(new Vector3(Screen.width / 2, Screen.height / 2, 3));
    //过渡动画,更改物品初始位置.
    Current = Vector3.MoveTowards(Current, Target, 2 * Time.deltaTime);
    m_Transform.position = Current;
}

猜你喜欢

转载自blog.csdn.net/weixin_55532142/article/details/121307566