Я пытаюсь заставить 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
Получите ContactPoint2D/обычный контакт из функции OnTriggerXXX. ⇐ C#
Место общения программистов C#
-
Anonymous
1722455972
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?
[b]РЕДАКТИРОВАТЬ:[/b]
После прочтения ответ ниже, я написал этот код ниже, но 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);
}
Подробнее здесь: [url]https://stackoverflow.com/questions/45782473/get-contactpoint2d-contact-normal-from-the-ontriggerxxx-function[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия