unity游戏《山鬼》开发日记2——梯子的设计

**

# 为了实现这个梯子的功能花了两天的时间,在网上的参考资料几乎没有;//~~可能是因为太低端,大佬们都不发

**

## 花了两天终于搞明白怎么弄了。。。

先说一下设计的思路 :将梯子碰撞模式改为触发器,当主角进入其中 就关闭主角的重力模拟,这样就可以方向键控制主角的上下位移了;//记得离开的时候给他恢复哦

**

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class LadderClimb : MonoBehaviour
{
public float climbSpeed = 0.02f;    //爬梯子的速度
public Collider2D jiaoca;          //对象刚体
private void OnTriggerStay2D(Collider2D collision)  //进入梯子时候
{
    if (collision.gameObject .tag == "Player")   //进入梯子主角的标签!!!
    {
        if(Input .GetKey (KeyCode.UpArrow))   //判断按键
        {
            
            collision.gameObject.GetComponent().velocity = new Vector2(0, climbSpeed);  //主角触碰梯子后给与一个Y轴方向的力
            collision.gameObject.GetComponent().gravityScale = 0;                       //主角触碰梯子后重力归零
            Physics2D.IgnoreCollision(collision.GetComponent(), jiaoca, true);          //梯子接触的地板和主角的碰撞关闭
        }
        if (Input.GetKey(KeyCode.DownArrow))
        {
            collision.gameObject.GetComponent().velocity = new Vector2(0, -climbSpeed);
            collision.gameObject.GetComponent().gravityScale = 0;
            Physics2D.IgnoreCollision(collision.GetComponent(), jiaoca,true);  
        }
        else
        {
            collision.gameObject.GetComponent().velocity = new Vector2(0,0);
        }
    }
}
private void OnTriggerExit2D(Collider2D collision)       //离开梯子时候
{
    collision.gameObject.GetComponent().gravityScale = 1;   梯子接触的地板和主角的碰撞关闭
    Physics2D.IgnoreCollision(collision.GetComponent(), jiaoca, false );//梯子接触的地板和主角的碰撞开启
}
}

unity游戏《山鬼》开发日记2——梯子的设计_第1张图片unity游戏《山鬼》开发日记2——梯子的设计_第2张图片
将代码拖进梯子,然后把和梯子接触的地面**拉到 public框中****,这样就可以完成梯子的设置了。

你可能感兴趣的:(unity游戏《山鬼》开发日记2——梯子的设计)