Unity3D 人称设置(第一人称视角、第三人称视角)

设置第一人称视角

1.把物体的坐标和摄像机的坐标设置成一样的,这样摄像机就在物体内部,就是第一人称的视角。
在这里插入图片描述
在这里插入图片描述
2.把摄像机拖拽进物体对象内,摄像机变成物体的子对象,这样摄像机就能跟着物体一起移动。
在这里插入图片描述


设置第三人称视角

方式一:(设置子对象)

1.将摄像机拖拽到合适的角度上
在这里插入图片描述
2.把摄像机拖拽进物体对象,摄像机成为物体的子对象,这样摄像机就可以跟着物体一起移动
在这里插入图片描述


方式二:(脚本设置)

  1. 创建摄像机对象变量: private Animation animation;
  2. 获取主摄像机: mainCamera = Camera.main;
  3. 设置主摄像机的位置:主摄像机的位置 = 物体对象的位置 + 两者相对坐标差
    mainCamera.transform.position = transform.position + new Vector3(0, 11, -14);

实现摄像机延迟移动效果

Vector3.Lerp(主摄像机的位置, 主摄像机新位置, 时间差);
mainCamera.transform.position = Vector3.Lerp( mainCamera.transform.position, transform.position + new Vector3(0, 11, -14), Time.deltaTime);

代码实例

public class Player01 : MonoBehaviour
{
    //设置变量
    private Animation animation;
    private Camera mainCamera;
    float runSpeed;
    float angleSpeed;
    
    // Start is called before the first frame update
    void Start()
    {
        //获取动画对象
        animation = GetComponent<Animation>();
        //初始化移动速度和角速度
        runSpeed = 20f;
        angleSpeed = 120f;
        //获取主摄像机
        mainCamera = Camera.main;
    }

    // Update is called once per frame
    void Update()
    {
        //设置移动速度
        float forward = Input.GetAxisRaw("Vertical") * runSpeed;
        //设置角速度
        float rotation = Input.GetAxisRaw("Horizontal") * angleSpeed;
        //判断移动还是站立
        if (forward > 0)
        {
            //设置移动方向
            transform.Translate(0, 0, forward * Time.deltaTime);
            //播放跑步动画
            animation.CrossFade("run");
        }
        else
        {
            //播放站立动画
            animation.CrossFade("stand");
        }

        //设置移动方向
        transform.Rotate(0, rotation * Time.deltaTime, 0);
    }

    private void LateUpdate()
    {
        //主摄像机的位置 = 物体对象的位置 + 两者相对坐标差
        //mainCamera.transform.position = transform.position + new Vector3(0, 11, -14);
        //摄像机延迟移动效果
        mainCamera.transform.position = Vector3.Lerp(
            mainCamera.transform.position, 
            transform.position + new Vector3(0, 11, -14), 
            Time.deltaTime);
    }
}
  • 16
    点赞
  • 123
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值