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);
}
上一篇: LeetCode 767.重构字符串
下一篇: 关于射线检测与碰撞检测
推荐阅读