어떤 충돌에도 두 개의 게임 오브젝트가 관련되어 있습니까? 내가 알고 싶은 것은, 어떤 객체에 내 객체를 포함시켜야하는지 어떻게 결정 OnCollision*
합니까?
예를 들어 Player 객체와 Spike 객체가 있다고 가정합니다. 내 생각은 다음과 같은 코드가 포함 된 스크립트를 플레이어에 넣는 것입니다.
OnCollisionEnter(Collision coll) {
if (coll.gameObject.compareTag("Spike")) {
Destroy(gameObject);
}
}
물론 Spike 객체에 다음과 같은 코드가 포함 된 스크립트를 대신 사용하여 동일한 기능을 수행 할 수 있습니다.
OnCollisionEnter(Collision coll) {
if (coll.gameObject.compareTag("Player")) {
Destroy(coll.gameObject);
}
}
둘 다 유효하지만 ,이 경우 충돌이 발생하면 Player 에서 작업이 수행되기 때문에 Player에 스크립트를 작성하는 것이 더 의미가 있습니다.
그러나 이것이 의심스러운 것은 장래에 Enemy, Lava, Laser Beam 등과 같이 충돌시 플레이어를 죽일 수있는 더 많은 객체를 추가 할 수 있다는 것입니다.이 객체에는 다른 태그가있을 수 있습니다. 따라서 플레이어의 스크립트는 다음과 같습니다.
OnCollisionEnter(Collision coll) {
GameObject other = coll.gameObject;
if (other.compareTag("Spike") || other.compareTag("Lava") || other.compareTag("Enemy")) {
Destroy(gameObject);
}
}
스크립트가 스파이크에있는 경우 플레이어를 죽이고 스크립트 이름을 다음과 같이 지정할 수있는 다른 모든 개체에 동일한 스크립트를 추가하기 만하면 KillPlayerOnContact
됩니다.
또한 플레이어와 적 사이에 충돌이 있으면 두 가지 모두에 대한 작업을 수행 할 수 있습니다 . 그렇다면 어떤 오브젝트가 충돌을 처리해야합니까? 아니면 충돌을 처리하고 다른 동작을 수행해야합니까?
나는 전에 적당한 크기의 게임을 만든 적이 없으며 처음에 이런 종류의 문제가 발생하면 코드가 지저분 해지고 유지하기 어려워 지는지 궁금합니다. 아니면 모든 방법이 유효하고 실제로 중요하지 않습니까?
모든 통찰력은 대단히 감사합니다! 시간 내 주셔서 감사합니다 :)
Tag.SPIKE
대신에?