我没有经验,我想了解我的角色使用梯子或爬过小墙的机制。为了移动,我使用的不是运动学的刚体,而是与 AddForce
. 我试图创建一个对象来模拟一个梯子来爬上去。为了让我的角色与梯子接触,我在梯子上插入了一个碰撞器触发器,并调用了 OnTriggerStay
的功能。经过努力,我的角色现在用一个bool,当他足够近的时候,他可以上或者下梯子,但是我不明白一些事情。首先,脚本是放在角色上好还是在比例尺上创建一个好?其次是到了顶部后,如何正确插入一个函数,让我的角色完成攀爬,使其到达楼梯所在的物体上方。我是不是要到达顶部,破坏游戏对象,然后在梯子上方的一个点重生呢......这种情况下有什么好办法?
private Rigidbody rb;
public bool ladderClimb = false;
void Start()
{
rb = GetComponent<Rigidbody>();
}
void Update()
{
if(ladderClimb){
directionRot = new Vector3(0, 0, 0); //direction of rotation
movement = new Vector3(0, Input.GetAxisRaw("Vertical"), 0).normalized; //object movement
rb.useGravity = false;}
else rb.useGravity = true;
}
void OnTriggerStay(Collider collider){
if(collider.gameObject.tag == "ladder"){
if(Input.GetKeyUp(KeyCode.E)) ladderClimb = !ladderClimb;}}
void OnTriggerExit(Collider collider){
if(collider.gameObject.tag == "ladder") ladderClimb = false;}
你可以添加一个触发碰撞器的梯子和检查,如果玩家是接触到碰撞器,然后禁用重力,并允许垂直运动。但是,如果物体从梯子上脱离,则重新启用重力并限制垂直运动。