unity学习笔记(四)

本文介绍了如何在Unity中实现玩家角色的移动控制和摄像机跟随。首先,通过创建Player物体并添加Rigidbody组件来设定玩家实体。接着,编写PlayerBehavior脚本,使用Input.GetAxis获取用户输入,实现角色的前后左右移动。然后,通过CameraBehavior脚本,设置摄像机的跟随位置和角度,确保摄像机始终对准玩家。最后,运行游戏,完成角色运动和摄像机跟随的效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

来自《Unity和C#游戏编程入门第五版》

玩家实体的创建

1.创建一个代表玩家的物体Player
在这里插入图片描述2.为玩家物体增加Rigidbody组件,并选中Rigidbody组件内的Constraints属性Freeze Rotation的x、y选项框
在这里插入图片描述在这里插入图片描述

获取玩家输入实现角色运动

1.在Scripts文件夹新建脚本PlayerBehavior
在这里插入图片描述
2.在脚本中设置左右控制方向(水平旋转),前后控制前进后退,保存并将脚本绑定代表玩家的物体Player
代码中Input.GetAxis("Vertical")Input.GetAxis("Horizontal")的返回结果是0或1或-1,取决于按键的情况(什么按键与是否被按下)。在transform操作中*Time.deltaTime是乘上一帧到现在这一帧的时间,以保证物体匀速运动。(因为Updata函数是每帧运行一次的,应该可以理解)

using UnityEngine;

public class PlayerBehavior : MonoBehaviour
{
    void Start()
    {
        Debug.Log("PlayerBehavior is start");
    }

    public float moveSpeed = 10f;
    public float rotateSpeed = 75f;

    private float vInput;
    private float hInput;
    void Update()
    {
        vInput = Input.GetAxis("Vertical") * moveSpeed;
        hInput = Input.GetAxis("Horizontal") * rotateSpeed;

        this.transform.Translate(Vector3.forward * vInput * Time.deltaTime);
        this.transform.Rotate(Vector3.up * hInput * Time.deltaTime);
    }
}

3.运行,实现了角色运动
在这里插入图片描述

摄像机跟随

camOffset是摄像头距物体的偏移位置,LateUpdate在Update之后执行,TransformPoint用于返回相对位置的绝对位置,LookAt方法会使摄像机对准Player物体。

using UnityEngine;

public class CameraBehavior : MonoBehaviour
{
    public Vector3 camOffset = new Vector3(0f, 1.2f, -2.6f);
    private Transform target;
    void Start()
    {
        target = GameObject.Find("Player").transform;        
    }

    void LateUpdate()
    {
        this.transform.position = target.TransformPoint(camOffset);
        this.transform.LookAt(target);
    }
}

3.运行,实现了摄像机跟随

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值