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

  • Post author:
  • Post category:其他


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);
    }

在这里插入图片描述



版权声明:本文为LCHUIHUI原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。