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