Unity动画☀️5. 控制摄像机跟随、 Vector3.Lerp、 LookAt()、TransformDirection

在这里插入图片描述

1️⃣ 我们将Player的Tag设置为Player

    方便我们通过C#的FindGameObjectWithTag()方法找到PlayerTransform位置信息,来对Camera的Transform进行设置

2️⃣ 给Camera添加代码

a、Lerp(a,b,f) ,返回 (1-f)*a+b*f ,即当f为0时返回的是a;f为1时,返回的是b

Lerp()通过Update()每帧不断更新自身位置,来线性地不断接近目标位置(即使目标位置不再改变,但当前位置还未到达,但Update还在运行,是Update保证Lerp能一直运行下去的,接近目标位置)

b、 transform.LookAt(gameObject.position)

使游戏对象看向gameObject的transform的position;

c、世界坐标to局部坐标 

player.TransformDirection(offset);

释义:offset为世界坐标,player为局部坐标,在运行游戏时,局部坐标会和世界坐标不一致,导致摄像头不在固定的方向上, 将offset世界坐标转换成player的局部坐标,只有保持方向的一致性,摄像头方向才不会发生变化

局部坐标to世界坐标

参考文章1文章2

using UnityEngine;

public class FollowTarget : MonoBehaviour {

    private Transform player;
    private Vector3 offset;
    Vector3 targetPosition;
    float smoothing = 3;

	void Start () {
        player = GameObject.FindGameObjectWithTag("Player").transform;
        offset = transform.position - player.position;  //当前位置-player的位置
	}
	
	void LateUpdate () {
        targetPosition = player.position + player.TransformDirection(offset);

        transform.position = Vector3.Lerp(transform.position, targetPosition, Time.deltaTime * smoothing);

        //transform.position = targetPosition;
        transform.LookAt(player.position);
	}
}

动画展示:

大家还有什么问题,欢迎在下方留言!


 

在这里插入图片描述


如果你有 技术的问题  项目开发

都可以加下方联系方式

和我聊一聊你的故事🧡

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值