【发布时间】:2022-04-03 19:11:48
【问题描述】:
我正在 Unity 中制作一个小型第三人称游戏演示,玩家在 y 轴上没有移动。没有跳跃,没有攀登,什么都没有。没有丘陵。没有山谷。没有楼梯。什么都没有。
但是IS是一小堆玩家控制器不断爬上去的木头。我把它放在那里只是为了好看,但事实证明这是一个令人沮丧的挑战。我正在尝试找出一种方法来阻止角色控制器在 Y 轴上完全上升/下降。
这是我为玩家移动设置的代码,它直接来自 Brackeys 的第一人称移动视频。
public class PlayerMovementScript : MonoBehaviour
{
public CharacterController controller;
//here a function of unity called CharacterController was used.
//it created another "reference" in unity that a game object can be assigned to
//this is used below
public float speed = 5f;
public float strafe = 1f;
// Update is called once per frame
void Update()
{
float x = Input.GetAxis("Horizontal") * strafe;
float z = Input.GetAxis("Vertical");
Vector3 move = transform.right * x + transform.forward * z;
controller.Move(move * speed * Time.deltaTime);
}
}
我尝试了几种不同的解决方案,但都没有奏效。 我已经连接了一个刚体来锁定 y 位置,然后是一个可配置的关节。 我尝试了一些不同的代码来尝试将对象的位置更新为每帧 y=1。 角色控制器组件附带的设置似乎与现实无关。我将坡度限制和步距偏移都设置为 0,由于某种原因,我的角色仍然可以爬上非常陡峭的斜坡(例如 140 度)并采取相当大的步骤。 我想可能是东西被卡在了胶囊底部的圆形边缘下并允许它被向上推,所以我尝试将一个圆柱体的网状对撞机连接到播放器上,以消除胶囊下方的小空间。无论如何,玩家一直在攀爬。
我对编码还是很陌生,大概只有 2 个月的时间,而且我还没有完全理解整个编码。但是,我觉得这不应该这么复杂。
我错过了什么吗?如何防止角色控制器向上或向下移动?我需要切换到刚体并完成它吗?
【问题讨论】: