2016-11-18 2 views
-1

Это верхняя часть сценария:Почему скрипт работает не так, как раньше?

using UnityEngine; 
using System.Collections; 
using System.Reflection; 

public class DetectPlayer : MonoBehaviour { 

    GameObject target; 
    int counter = 0; 

    void OnCollisionEnter(Collision collision) 
    { 
     if (collision.gameObject.name == "Platform") 
     { 
      Debug.Log("Touching Platform"); 
     }   
    } 

Я использую отладчик и точку останова и он получает к линии

if (collision.gameObject.name == "Platform") 

И на имя свойства в геймобжекты я см. «ThirdPersonController», но он никогда не попадает в Debug.Log

Сценарий прикреплен к платформе, как показано на скриншоте. Я бег игры переместить игрок на платформу, когда он потрогать не остановится на точке разрыва, но не вступают в debug.log

Screenshot

ответ

2

collision.gameObject.name будет называться на GameObject которой ваш коллайдер прикреплен так, чтобы ваш коллайдер не привязан к игровому объекту, который называется платформой, после чего его не назовешь.

1

Я думаю, что @MiladQasemi прав, но я попробую объяснить это другим способом.

Проблема, как я понимаю, это ваш скрипт прилагается к вашей Platform объекта, и, следовательно, код if (collision.gameObject.name == "Platform") никогда не будет правдой. Поскольку скрипт и платформа являются одним, объект не может столкнуться с самим собой.

Измените код, чтобы быть:

if (collision.gameObject.name == "ThirdPersonController") 
Смежные вопросы