Unity3D:创建爬梯子的脚本
Unity3D: Create scripts to climb a ladder
我没有经验,我正在尝试了解我的角色使用梯子或爬过小墙的机制。为了移动,我使用的刚体不是运动学的,而是 AddForce
。我试图创建一个对象来模拟要爬上的梯子。为了让我的角色与梯子接触,我在梯子上插入了一个碰撞器触发器并调用了 OnTriggerStay
函数。经过一番工作后,我的角色现在在他足够接近时会出现一个布尔值,他可以上梯子或下梯子,但我不明白一些事情。首先,剧本是放在角色身上好还是在天平上造一个好?第二件事是一旦你到达顶部如何正确插入一个函数并让我的角色完成攀登,使其到达楼梯所在的物体上方。我必须到达顶部,摧毁游戏对象并在梯子正上方的某个点重生吗? ...在这些情况下最好的方法是什么?
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;}
您可以在梯子上添加触发碰撞器并检查玩家是否接触到碰撞器然后禁用重力并允许垂直移动。但如果物体从梯子上脱离,则重新启用重力并限制垂直运动。
我没有经验,我正在尝试了解我的角色使用梯子或爬过小墙的机制。为了移动,我使用的刚体不是运动学的,而是 AddForce
。我试图创建一个对象来模拟要爬上的梯子。为了让我的角色与梯子接触,我在梯子上插入了一个碰撞器触发器并调用了 OnTriggerStay
函数。经过一番工作后,我的角色现在在他足够接近时会出现一个布尔值,他可以上梯子或下梯子,但我不明白一些事情。首先,剧本是放在角色身上好还是在天平上造一个好?第二件事是一旦你到达顶部如何正确插入一个函数并让我的角色完成攀登,使其到达楼梯所在的物体上方。我必须到达顶部,摧毁游戏对象并在梯子正上方的某个点重生吗? ...在这些情况下最好的方法是什么?
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;}
您可以在梯子上添加触发碰撞器并检查玩家是否接触到碰撞器然后禁用重力并允许垂直移动。但如果物体从梯子上脱离,则重新启用重力并限制垂直运动。