【Unity】11.1 角色控制器 (Character Controller)

分类:Unity、C#、VS2015

创建日期:2016-05-02

一、简介

角色控制器(Character Controller)主要用于对第三人称或第一人称游戏主角的控制。如果要创建类人角色,可使用角色控制器 (Character Controller)。这可以是第三人称游戏 (Third Person Platformer) 中的主角色、FPS 射击者或任何敌人角色。

二、基本概念

第三人称游戏中的这些控制器由于无规律可循,所以无法遵守固定的物理规则,例如,让某辆车每小时跑 90 英里,但是它可能会突然停止然后在极小的空间中转弯。此时,就需要由角色控制器 (Character Controller) 进行碰撞检测以确保角色可以沿墙滑动、走上和走下阶梯等。

角色控制器 (Character Controller) 既可以受力的影响,也可以不受力的影响。比如,可以通过脚本对刚体 (Rigidbody) 应用力来推动它们。通常,所有类人角色都使用角色控制器 (Character Controller) 来实现。

角色控制器 (Character Controller) 本质上是非物理性的,如果要将真实物理现象应用于角色,比如在绳索上摇摆、由大岩石推动,则必须使用刚体 (Rigidbody),这样才能对角色使用关节 (Joint) 和力。

角色控制器 (Character Controller) 始终沿 Y 轴对齐,因此如果角色需要能够在空间中改变方向(例如在变化的重力下),则也需要使用刚体 (Rigidbody)。但是要注意,很难将刚体 (Rigidbody) 调整为使角色感觉正常,因为游戏角色的预期行为

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CharacterControllerUnity 引擎中用于控制角色移动和碰撞检测的组件,它可以非常方便地实现角色的移动和跳跃。下面是一个简单的代码示例,演示如何使用 CharacterController 实现角色的移动和跳跃: ```csharp using UnityEngine; public class PlayerController : MonoBehaviour { public float moveSpeed = 5f; // 移动速度 public float jumpSpeed = 10f; // 跳跃速度 public float gravity = 20f; // 重力加速度 private CharacterController controller; private Vector3 moveDirection = Vector3.zero; void Start() { controller = GetComponent<CharacterController>(); } void Update() { // 计算角色的移动向量 float h = Input.GetAxis("Horizontal"); float v = Input.GetAxis("Vertical"); Vector3 move = transform.right * h + transform.forward * v; moveDirection = move * moveSpeed; // 判断角色是否在地面上 if (controller.isGrounded) { // 角色跳跃 if (Input.GetButtonDown("Jump")) { moveDirection.y = jumpSpeed; } } // 应用重力 moveDirection.y -= gravity * Time.deltaTime; // 使用 CharacterController 控制角色移动 controller.Move(moveDirection * Time.deltaTime); } } ``` 在这个示例中,我们首先定义了一些参数,包括移动速度、跳跃速度和重力加速度等。然后在 Start() 方法中获取 CharacterController 组件的引用。在 Update() 方法中,我们首先计算角色的移动向量,然后判断角色是否在地面上。如果在地面上,就检测是否按下了跳跃键,如果是,则将角色的垂直速度设置为跳跃速度。最后,我们应用重力,并使用 CharacterController 控制角色移动。 需要注意的是,在使用 CharacterController 控制角色移动时,我们需要将移动向量乘以 Time.deltaTime,以确保在不同的帧率下,角色的移动速度始终保持一致。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值