0

使用 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。

正如您所看到的,上面的脚本不起作用,只是一直在乱看会发生什么。

平台对象在游戏中是随机实例化的,颜色也是随机的。所以我需要检测那个特定的平台,然后得到它的颜色状态。我需要做什么?

4

1 回答 1

2

以下是提取组件的方法:

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为 a切换string为使用 an enum

于 2013-11-04T00:01:00.437 回答