UNITY: Как способствовать тому, чтобы он обнаружил столкновение двух объектов определенного цвета?

У меня есть сцена с 1 объектом, где он сталкивается с двумя объектами, первым синим цветом, вторым синим цветом.

Мне хотелось бы знать, как способствовать тому, чтобы он обнаружил, когда оба того же цвета, сделайте определенное действие. Вышеупомянутое действие уже я считаю ее ясной, и столкновение также я считаю ее запрограммированной, но который я обнаружил, если они того же цвета... нет.

как?

столкновение:

public class Colision : MonoBehaviour {

    //public GameObject HaloPrefab; // empty with halo applied to it...

    public Text points;


    void OnCollisionEnter(Collision col){


        if ( col.gameObject.name == "Cube") {

            col.gameObject.SetActive(false); // Lo que hago es que si colisiona desaparezca el objeto, pero necesito que haga eso si ambos son del mismo color. 
        }




        if ( col.gameObject.name == "Cube(Clone)") {

            col.gameObject.SetActive(false);


        }     
}

Если он служит чем-то, объект, который может сталкиваться, ты можешь менять ему цвет, и я это делаю так, и да, что функционирует:

public class ChangeColor : MonoBehaviour {

    public Material[] materials;
    public Renderer rend;

    private int index = 1;

    // Use this for initialization
    void Start () {

        rend = GetComponent<Renderer> ();
        rend.enabled = true;

    }

    public void Update() {
        if (materials.Length == 0) {
            return;
        }
        if (Input.GetMouseButtonDown (0)) {
            index += 1;

            if (index == materials.Length + 1) {
                index = 1; 
            }
            print (index);

            rend.sharedMaterial = materials [index - 1];                        
        }
    }
}
1
задан 10.04.2017, 02:24
1 ответ

Если, как он кажется, цвет приходит определенный материалом, и оба game objects имеют этот материал, ты можешь делать следующее (cГіdigo не протестированный):

void OnCollisionEnter(Collision col)
{
    if (col.gameObject.name == "Cube"
        && col.gameObject.GetComponent<Renderer>().sharedMaterial == GetComponent<Renderer>().sharedMaterial)
    {
        col.gameObject.SetActive(false);
    }

    if ( col.gameObject.name == "Cube(Clone)")
    {
        col.gameObject.SetActive(false);
    } 
}
-1
ответ дан 24.11.2019, 12:41

Теги

Похожие вопросы