使用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。
正如你所看到的,上面的剧本不会起作用,只是一直在看看会发生什么。
平台对象在游戏中随机实例化,也是随机颜色。因此,我需要检测特定平台,然后获得其颜色状态。我需要做什么?
答案 0 :(得分: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
作为string
转换为使用enum
代替。