2017-01-04 5 views
0

я следующий сценарий:Объекта оленьей кожи сталкивается

using UnityEngine; 
using System.Collections; 

public class BallScript : MonoBehaviour { 
    public float speed; 
    private Rigidbody body; 
    // Use this for initialization 
    void Start() { 
     body = GetComponent<Rigidbody>(); 
    } 

    // Update is called once per frame 
    void Update() { 
     body.AddForce(transform.forward * speed); 
    } 

    void OnCollisionEnter(Collision collision) { 
     Debug.Log("Collision"); 
     Destroy (this); 
    } 
} 

AS вы можете увидеть это имеет OnCollisionEnter однако мой объект не может Сталкиваются с чем вместо этого он летит через каждый объект?

Это мой prefab:

enter image description here

И объект им пытаются наехать:

enter image description here

Может кто-нибудь сказать мне, что ив сделал не так?

+0

Почему ваша сфера является триггером? Отключить триггер, и это должно быть нормально –

+0

К сожалению, это не сработало :( –

+0

Вы также можете рассмотреть возможность использования 'RigidBody.AddForce()' или других физических методов для перемещения объекта - если вы используете 'Translate()', это будет перемещать его, не обращая внимания на физические взаимодействия, и может вызвать некоторые пропущенные столкновения. – Serlite

ответ

2

Если вы хотите использовать isTrigger, вам необходимо установить коллизию с OnTriggerEnter. Если вы хотите использовать OnCollisionEnter, попробуйте добавить rigidBody к кубу с флагом is kinematic (для производительности), отключите 0 сферу от is trigger и посмотрите, работает ли это.

Проверьте различие методов здесь:

https://docs.unity3d.com/ScriptReference/Collider.OnCollisionEnter.html https://docs.unity3d.com/ScriptReference/Collider.OnTriggerEnter.html

С уважением

+0

Я обновил свой код но он по-прежнему не работает –

+0

Вы отлаживаете свое приложение? Отлаживайте игру и вручную переместите один объект в другой на «Дизайн-вид», чтобы вы могут видеть перекрывающиеся коллайдеры и видеть, срабатывает ли ваш код. Кроме того, попробуйте добавить коллайдер коробки к нему только для целей тестирования (вы можете оставить там свой коллайдер сферы, просто отключите его) и проверьте, стреляет ли сценарий. –

+0

Только один из жестких bodys должен быть кинематическим. Не оба из них кстати –