Элементы все еще подпрыгивают - PullRequest
0 голосов
/ 06 октября 2018

обновление - Добавлено видео

Я сделал такие вещи, которые вы можете видеть на многих уроках и форумах:

  • создал Физический материал, который я назвал "No bounce "
  • set Dynamic Friction = 0 и Static Friction = 0
  • создали куб и добавили Box collider с Material = "No Bounce"
  • set Mass = 1, Drag = 0 и Angular Drag = 0

Теперь я добавил еще один куб для земли, сделал его очень большим и добавил Box collider с Material = "No Bounce"

У меня есть 2 проблемы: - когдаони сталкиваются, куб отскакивает (тогда как это не должно быть в моей конфигурации) - я создал скрипт и прикрепил его к кубу, чтобы изменить скорость, и установил его на 0, когда происходит столкновение:

using UnityEngine;

public class CubeProperties : MonoBehaviour
{
    private Rigidbody _rb;
    private bool _landing;

    private void Start()
    {
        _rb = GetComponentInParent<Rigidbody>();
    }

    public void OnCollisionEnter(Collision collision)
    {
        Debug.Log("Collision");
        _landing = true;
    }

    public void FixedUpdate()
    {
        if (!_landing) {
            return;
        }
        _rb.velocity = Vector3.zero;
        _landing = false;
    }    
}

Итак, при первом столкновении я пытаюсь мгновенно остановить куб с помощью _rb.velocity = Vector3.zero;.Но изменение скорости не влияет , я не понимаю, почему.Я много пытался понять, что происходит ... но ничего не произошло.Единственное, что я могу добавить, и это работает, это: AddForce() Я пытался получить отрицательное значение, но это тоже не работает.

Что я забыл?

Вотвидео Я надеюсь, что это легко понять (и я надеюсь, что мне позволят помочь с видео):

https://youtu.be/I3C1KBmm5yw

1 Ответ

0 голосов
/ 06 октября 2018

Похоже, вы смешиваете 2D физику и 3D физику вместе.Если это 2D-сцена, вам действительно нужно использовать 2D Rigidbody и Box Collider 2D .

Если это 3D-сцена, то, как она выглядит, тогда вы просто хотите убедиться, что вы используете обычный OnCollisionEnter .В существующем состоянии OnCollisionEnter2D не будет вызываться в этой настройке.

Просто для того, чтобы увидеть, вызывается ли что-то, хорошим советом в Unity является Debug.Log .Он отправит сообщение на консоль, если его уволят.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...