Tag: 碰撞检测

仅检测碰撞/碰撞一次

我有一个物体向另一个物体移动并与物体碰撞,我希望碰撞/碰撞事件只发生一次。 我尝试使用bool但它没有按预期工作。 看来我做错了什么。 bool doDamage = true; void OnCollisionEnter2D(Collision2D other) { if (other.gameObject.tag == “Target” && doDamage) { doDamage = false; // damage code } } void OnCollisionExit2D(Collision2D other) { if (other.gameObject.tag == “Target”) { doDamage = true; } } 编辑: 我希望“损坏代码”只运行一次,即使这2个对象仍在接触。 此脚本仅分配给1个对象,而不是两个。

Unity Physics2D.Raycast击中了自己

我正在尝试使用Physics2D.Raycast来检查玩家是否在地面上(我知道还有其他方法来检查玩家是否在地面但我认为光线投射是最可靠的)。 问题是在我的场景中它将玩家本身作为命中返回,我真的不明白为什么以及我该怎么做。 我的代码(在PlayerController )如下: public bool IsGrounded () { Bounds bounds = this.playerCollider.bounds; Vector3 rayOrigin = bounds.center; rayOrigin.y -= bounds.extents.y; RaycastHit2D hit = Physics2D.Raycast (rayOrigin, Vector2.down, 0.1f); if (hit.collider != null) { Debug.Log (“Collider is: ” + hit.collider.name); } return hit.collider != null; } 我可以使用以下方法调试铸造射线: Debug.DrawLine (rayOrigin, new Vector3 (rayOrigin.x, rayOrigin.y – 0.1f, rayOrigin.z), Color.magenta); […]

与AABB矩形线交叉?

优选地,不使用任何类型的循环,因为这将在游戏中使用。 我希望将一条线与一个任意大小的矩形相交。 但我也希望返回交叉点[s]。 这是可能的,我做了一些谷歌搜索,但仍然没有解决。 该线使用(x1,y1,x2,y2)定义。 矩形也有这两点。