欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

2D游戏中检测是否在地面的一种方法

程序员文章站 2024-03-16 16:58:22
...
public Transform Checkpoint;//这个点一般位于主角的脚下
public float CheckRadius;
public LayerMask Whatisground;//设置要检测的地面层
public bool isgroud;
// Use this for initialization
void Start ()
{
    rig = GetComponent<Rigidbody2D>();
}

// Update is called once per frame
void Update ()
{
    float t = Input.GetAxisRaw("Vertical");//这个不具有平滑的滤波的应用 只能有-1 0 1的变化
    float v2 = Input.GetAxis("Vertical");//这个具有平滑的变化
    if (Input.GetAxisRaw("Horizontal") > 0)
    {
        rig.velocity = new Vector2(movespeed, rig.velocity.y);
    }
    else if (Input.GetAxisRaw("Vertical") < 0)
    {
        rig.velocity = new Vector2(-movespeed, rig.velocity.y);
    }
    else
    {
        rig.velocity = new Vector2(0, rig.velocity.y);
    }
    // Physics2D.OverlapCircle常用检测工具,检测一个碰撞器是否在一个圆形范围内
    //Physics2D.OverlapCircle(圆形范围的圆心位置,圆形的半径范围,作用于哪一个层)
 isgroud =   Physics2D.OverlapCircle(Checkpoint.position, CheckRadius, Whatisground);
    if (Input.GetButtonDown("Jump")&& isgroud)//避免二段跳
    {

        rig.velocity = new Vector2(rig.velocity.x, jumpspeed);
    }

2D游戏中检测是否在地面的一种方法