Получите ContactPoint2D/обычный контакт из функции OnTriggerXXX.C#

Место общения программистов C#
Ответить
Anonymous
 Получите ContactPoint2D/обычный контакт из функции OnTriggerXXX.

Сообщение Anonymous »

Я пытаюсь заставить Unity не менять скорость и направление объектов после столкновения. Мне нужно получить событие OnCollisionEnter2D, но мне не нужно, чтобы Unity автоматически менял скорость и направление; Я хочу сделать это вручную.

Я пытался использовать этот код, но он не работает (автоматическое столкновение все еще работает):

private void OnCollisionEnter2D(Collision2D collision)
{
fallVector = GetRigidbody.velocity.normalized;
fallNormalVector = collision.contacts[0].normal;

var reflectedVelocity = Vector3.Reflect(fallVector, fallNormalVector).normalized;
GetRigidbody.velocity = reflectedVelocity * 3;
}


Мне сказали пометить мой GameObject как isTrigger и использовать OnTriggerEnter2D из моего другого вопроса, но он использует Collider2D вместо Collision2D и я не могу получить от этого нормальный контакт.

Как я могу получить ContactPoint2D или нормальный контакт из Collider2D в функцию OnTriggerEnter2D?

РЕДАКТИРОВАТЬ:

После прочтения ответ ниже, я написал этот код ниже, но GetContacts() возвращает (0.0, 0.0) во всех элементах, что я сделал не так?

Оба объекта столкновения IsTrigger = true. (Версия Unity – 5.6.0f3)

ContactPoint2D[] contacts = new ContactPoint2D[2];

void OnTriggerEnter2D(Collider2D collision)
{
//Get all contact points and save to the contacts array variable
collision.GetContacts(contacts);

Vector3 normal = contacts[0].normal;

GetRigidbody.velocity = Vector3.Reflect(GetRigidbody.velocity, normal);
}


Подробнее здесь: https://stackoverflow.com/questions/457 ... x-function
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»