obsidian/笔记文件/2.笔记/碰撞器检测.md
2025-03-26 00:02:56 +08:00

1.2 KiB
Raw Permalink Blame History

内部函数是这个:

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