主摄像机附近实例化一个物品/物品过渡动画

主摄像机附近实例化一个物品/物品过渡动画

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

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的值unity 摄像机跟随物体,如果这个值超过了target,返回的就是target的值unity 摄像机跟随物体3D素材,否则返回current。

更详细的说明可以参考这个:

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

private Transform m_Transform;
private  Vector3 Current;    //物品初始位置.
private  Vector3 Target;     //物品目标位置.
void Start()
{
    m_Transform = gameObject.GetComponent();
    Current = m_Transform.position;    //初始化物品的初始位置.
}
void Update()
{
    yd();
}
/// 
/// 物品往摄像机位置进行动画移动并跟随.
/// 
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;
}

文章来源:https://blog.csdn.net/weixin_55532142/article/details/121307566