簡體   English   中英

Unity:碰撞時獲取對象狀態

[英]Unity: get object state on collision

使用Unity3d 4.1.2和C#Mono。

我有一個包含此腳本的對象(播放器):

string[] colors = new string[] {"Red", "Blue", "Green", "Yellow", "Black", "Purple", "Pink", "Orange"};
public string joeColor;

// Use this for initialization
void Start () 
{
    SetColorState();
}

// Update is called once per frame
void Update () 
{

}

public void SetColorState()
{
    joeColor = colors[Random.Range(0, 7)];
}

void OnCollisionEnter(Collision obj)
{
    PlatformMove platform = new PlatformMove();
    platform = obj;
    if(platform.platformColor.ToString() == joeColor.ToString())
    {
        Debug.Log("COLOR MATchED!!!  Joe = " + joeColor.ToString() + " Platform COlor = " + platform.platformColor.ToString());
    }
}

我想要做的是檢測平台對象上的碰撞。 然后從該對象(平台顏色)獲取一個方法,如果它與我的播放器對象相同,那么= true。

正如您所看到的,上面的腳本無法正常工作,只是一直在看看會發生什么。

平台對象在游戲中隨機實例化,也是隨機顏色。 因此,我需要檢測特定平台,然后獲得其顏色狀態。 我需要做什么?

以下是如何提取組件:

void OnCollisionEnter(Collision obj)
{
    PlatformMove platform = obj.gameObject.GetComponent<PlatformMove>();
    if(platform != null){
        if(platform.platformColor.ToString() == joeColor.ToString()) {
            //... do stuff
        }
    } else {
        //... collision object did not have a PlatformMove component.
    }
}

您似乎知道如何處理顏色比較,但如果您預計會發生很多碰撞,我建議您將platformColor作為string為使用enum

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM