【发布时间】:2019-03-28 15:29:43
【问题描述】:
我试图让我的玩家忽略与我拥有的平台上的边缘对撞机的碰撞。
这是我添加到播放器的脚本
public class TestMovement : MonoBehaviour
{
public Rigidbody2D ball;
private GameObject purplePlat1;
private GameObject player;
// Start is called before the first frame update
void Start()
{
purplePlat1 = GameObject.Find("purple_plat");
player = GameObject.Find("circle-png-44659");
ball = GetComponent<Rigidbody2D>();
ball.AddForce(new Vector2(0, 10), ForceMode2D.Impulse);
Debug.Log("start");
}
// Update is called once per frame
void Update()
{
}
void OnCollisionEnter2D(Collision2D collision)
{
Physics2D.IgnoreCollision(purplePlat1.GetComponent<EdgeCollider2D>
(), GetComponent<CircleCollider2D>());
Debug.Log("collision");
}
}
球仍在撞击平台。我已经确认 oncollisionenter 方法正在触发。
【问题讨论】:
-
你应该把 IgnoreCollision 放在 Start() 中。在您将其设置为 false 之前,它一直有效。
-
on collision 是在发生碰撞时调用的,也就是说,来不及忽略。这就像告诉来你家的人不要来你家一样。他们已经在那里了。你需要在他们来之前告诉他们。
标签: unity3d collision-detection