【Unity】 实现角色移动、视角旋转以及跳跃

本文介绍了如何在Unity中创建角色模型和地面,通过添加Rigidbody和CapsuleCollider组件实现角色移动,使用C#脚本来控制视角旋转,并添加代码实现角色跳跃功能。在Update和FixedUpdate函数中调整角色行为,确保平滑移动和跳跃效果。

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

【Unity】 实现角色移动、视角旋转以及跳跃

一、使用UGUI创建角色模型和地面

创建一个Capsule和一个Cube模型,将其放在空物体下面,命名为Player
在这里插入图片描述
创建一个Plane作为地面

二、在【Inspector】面板中调整Player属性

Player中添加RigidbodyCapsuleCollider组件
Transform中修改Position,将Y改为1
Rigidbody -> Constraints -> FreezeRotaion中勾选 X Y Z
CapsuleCollider中将Height属性改为2
在这里插入图片描述

三、为Player添加移动代码

添加PlayerContoller脚本,并拖拽到Player上,具体代码如下

Transform cameraObj;
Vector3 moveDirection;
Rigidbody rb;
//初始化
void Awake()
{
    cameraObj = Camera.main.transform;
    rb=GetComponent<Rigidbody>();
}
// Update is called once per frame
void Update()
{
    float h = Input.GetAxis("Horizontal");
    float v = Input.GetAxis("Vertical");

    moveDirection= cameraObj.forward*v;
    moveDirection+=cameraObj.right*h;
    moveDirection.Normalize();//归一化
    moveDirection *= 5f;//移动速度设定为5f
    moveDirection.y = 0f;//防止Player运动时倾斜
}
//物理更新
void FixedUpdate()
{
    rb.velocity = moveDirection;
}

运行效果如下
在这里插入图片描述
在Update中添加物体转向代码,旋转速度为0.3f

transform.forward = Vector3.Slerp(transform.forward, moveDirection, 0.3f);

在这里插入图片描述
此时物体在移动的过程中的朝向问题就解决了

四、添加角色跳跃

声明一个跳跃高度变量的

float jumpHeight;

在Awake下初始化jumpHeight

jumpHeight = 0;

调整FixedUpdate中的代码

rb.velocity = new Vector3(moveDirection.x, rb.velocity.y, moveDirection.z) + Vector3.up * jumpHeight;
jumpHeight = 0f;//初始化跳跃高度

添加跳跃方法

void Jump()
{
    jumpHeight = 5f;
}

在Update中添加键盘事件,当按下空格时触发跳跃

if (Input.GetKeyDown(KeyCode.Space))
{
    Jump();
}

在这里插入图片描述

恭喜你完成了本次教学,后续更新的文章多多支持

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值