2015-12-07 2 views
-1

У меня есть объект, который, после получения его соответствующего входа, он движется таким образом:Unity 2D Bounce Back движущегося объекта при столкновении с другим объектом

mov = new Vector3((Input.GetAxis("Horizontal") * vel), 0, 0); 
transform.position += mov; 

Но я хочу, чтобы это оправиться после того, как он сталкивается с объектом.

I've сделал процедуры уже (OnCollisionEnter2D(Collsion2D col){bla bla...}), но мне нужна помощь с тем, что происходит на столкновение (прыгающий назад объект) ....

I've пытался дать столкнувшихся объект а подпрыгивая материал, но это немного замедляет его, я предполагаю, что из-за постоянной силы, данной ускорением.

Приветствия.

ответ

0

Вы телепортируете объект в текущее время. вместо этого вы должны использовать Rigidbody.addForce, это добавит силу в указанном направлении, таким образом, если вы сделаете противоположное направление, будет «отскакивать» от объекта. Другим вариантом было бы создать физический материал, а затем не беспокоить код.

+0

Ну, я did't addForce (хотя я его пробовал), потому что я уже использовал переводы, и я просто узнал, что нехорошо сливаться в обоих контекстах/I дал объект столкновения sharedMaterial с bouncincess и работал так, как я этого хотел. – LinkWindcrafter

1

Если вы перемещаете объект с помощью transform.position, то, что вы делаете, в основном является «телепортом», поэтому он будет игнорировать подпрыгивающий материал. Если вы хотите, чтобы он подпрыгнул, вам нужно написать физический код для обнаружения столкновения и изменения движения, или вы можете сделать addforce для перемещения объекта, и он обнаружит столкновения и отреагирует автоматически.

+0

Да, на самом деле я только что узнал, что это не хорошая идея объединить оба перевода и физику между двумя объектами. – LinkWindcrafter

+0

Рассмотрите также использование addforce с импульсом для имитации забавного подпрыгивания при столкновении –

0

Вы не используете материалы, не так ли?

Смотрите, если содержание этого поста может помочь вам, ОП использует формулу, используя Raycast и ответ направляет его использовать Raycast с Layers Maks:

2D bouncing formula doesn't work properly

Существует этот один также с фиксированные углы (как понг), но он использует материал (со значениями: трения: 0, bounciness: 1): https://gamedev.stackexchange.com/questions/70294/get-gameobject-to-bounce-of-colliders

Но если ничего не имеет смысла, и вы сходят с ума, и, возможно, захотите, чтобы начать с нуля, это официальное видео учебник по подпрыгивая и скользя в 2D: https://unity3d.com/learn/tutorials/modules/beginner/2d/sliding-bouncing-2d

+0

Спасибо, я пробовал давать boxCollider2d объекта sharedMaterial с bounciness, и это сработало !! – LinkWindcrafter

 Смежные вопросы

  • Нет связанных вопросов^_^