碰撞器检测.md 1.2 KB

内部函数是这个:

OnCollisionEnter2D

这里写一个碰撞检测函数,检测是否在地面 而且这里的实现,也是通过布尔判断,不进行连跳的

    private void OnCollisionEnter2D(Collision2D collision)
    {
        //当前碰到了游戏物体,并且是地面       
        if (collision.collider.ClosestPoint(transform.position).y < transform.position.y)
        {
            isGrounded = collision.gameObject.CompareTag("Ground");
            if (isGrounded!=lastIsGrounded)
            {
                if (isGrounded)
                {
                    AudioSource.PlayClipAtPoint(landClip,transform.position);
                }
            }
            lastIsGrounded = isGrounded;
        }
    }

这个函数,是检测碰撞的点的位置

![[Pasted image 20230703150748.png]]

而这个函数CompareTag,就是检测Tag,在这里就是检测碰撞到的物体标签Tag是不是Ground

![[Pasted image 20230703154107.png]]

![[Pasted image 20230703150956.png]]

在这里,简单播放音效,是使用的这个函数

![[Pasted image 20230703151132.png]]

前面是有加载的

![[Pasted image 20230703151213.png]]