我对Unity和C#非常陌生 我一直试图让我的角色爬上梯子几个小时,并尝试了20多种不同的脚本,但没有任何效果。我将脚本放在梯子周围的对撞机上(梯子是瓷砖的一部分)重新放置梯子并在其周围放置对撞机的瓦片,但角色没有掉下来(我已将对撞机作为触发器)再次使用,这是我发现很多人都喜欢的代码,但似乎并不适用我 这是阶梯代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Ladder : MonoBehaviour
{
GameObject playerOBJ;
bool canClimb = false;
float speed = 1;
void OnCollisionEnter(Collision coll)
{
if (coll.gameObject.tag == "Player")
{
canClimb = true;
playerOBJ = coll.gameObject;
}
}
void OnCollisionExit(Collision coll2)
{
if (coll2.gameObject.tag == "Player")
{
canClimb = false;
playerOBJ = null;
}
}
void Update()
{
if (canClimb)
{
if (Input.GetKey(KeyCode.W))
{
playerOBJ.transform.Translate(new Vector3(0, 1, 0) * Time.deltaTime * speed);
}
if (Input.GetKey(KeyCode.S))
{
playerOBJ.transform.Translate(new Vector3(0, -1, 0) * Time.deltaTime * speed);
}
}
}
}'
答案 0 :(得分:0)
您需要在攀爬时禁用角色刚体上的重力,否则重力将始终使您的角色坠落。
您可以像这样访问角色刚体:
playerRB = playerOBJ.GetComponent<Rigidbody2D>();
您可以将重力更改为0:
playerRB.gravityScale = 0;
,并在需要时返回1。
例如,当您的角色碰到梯子对撞机时就禁用重力,而当您按“ A”或“ D”使角色从梯子上跌落时启用重力。