2016-11-27 14 views
0

Привет У меня есть вопрос, на который я пока не смог найти ответ. У меня есть два игровых объекта рядом друг с другом, и у каждого есть коллайдер. Теперь, когда третий объект сталкивается с одним из игровых объектов, направление/отскок этого третьего объекта принимает другое направление, основанное на том, к какому gameObject/коллайдеру он касался. Это отлично работает в большинстве случаев, когда gameObjects попадает в чистоту, но когда он сталкивается в середине обоих коллайдеров, тогда он принимает направление посередине, это создает проблему для моей игры.Unity - Как сделать gameObject сделать только одно столкновение, когда он попадает на два коллайдера

Я хотел знать, как обеспечить запуск только одного коллайдера/столкновения (неважно, какой из них), когда любые другие объекты сталкиваются с обоими, то есть когда он попадает в соединение обоих объектов gameObject.

ответ

2

Столкновение происходит в начале кадра, так что вы можете обнаружить столкновения и сброса в LateUpdate:

private bool hasCollided = false; 
void OnCollisionEnter(Collision col) 
{ 
    if(this.hasCollided == true){ return; } 
    this.hasCollided = true; 
} 
void LateUpdate() 
{ 
    this.hasCollided = false; 
} 
+0

Мне нравится это как общий ответ, но OP, вероятно, будет хотеть иметь более надежный способ решить, как обращаться с двойными столкновениями, чем простой флаг 'bool'. Если оба объекта делают отскок встречного объекта различными способами, то, имея механизм, решающий, какой объект столкнулся «первым», как это, может привести к непредсказуемости игры, что может привести к разочарованию для игроков. – Abion47

+0

Спасибо за ваши предложения. Попробуй это. – Kaz