【问题标题】:How change "halo" in a object when detect collision?检测碰撞时如何改变物体中的“光环”?
【发布时间】:2017-03-27 06:53:01
【问题描述】:

我有一个对象在与另一个对象碰撞时会改变颜色并减小其大小:gameObject.transform.localScale /= 2; 但它有一个白色的halo

我希望halo 与我的对象的颜色相匹配。所以当对象是绿色时,halo 也将是绿色的。如果我的对象是蓝色的,那么 halo 也会是蓝色的。另外,我希望当我的对象检测到与其他对象的碰撞时,halo 也会减少,我不知道该怎么做。

当我按下屏幕时,代码会改变颜色(蓝色、红色或绿色):

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];                        
        }
    }
}

我知道使用halo,但以编程方式我不知道。

【问题讨论】:

  • 看你最后两个问题和这个问题,我建议你学习Unity的basic partprogramming。您可以使用if 语句执行此操作。你必须先了解基础。我之所以这么说,是因为您问题中的代码甚至没有接近您期望做的事情。
  • 我知道,程序员,这只会改变颜色!我需要光环!
  • 以编程方式 halo 我不知道如何使用它。
  • 你能帮我解决这个问题吗?
  • “所以当物体是绿色的时候,光环也会是绿色的。如果我的物体是蓝色的,那么光环也会是蓝色的。另外,我希望当我的对象检测到与其他对象的碰撞时,晕也减少”。请告诉我你的哪部分有问题?改变颜色?比较颜色?检测碰撞?您的问题甚至都没有。请阅读我的第一条评论。 “光环也减少”我认为你应该在你的问题中更多地解释这一点。编码愉快!

标签: c# unity3d colors halo


【解决方案1】:

这个 Halo 组件可以通过一些工作来访问,让我用代码来演示它。

Private void Start() {   
    SerializedObject haloComponent = new SerializedObject(this.gameObject.GetComponent("Halo"));
    haloComponent?.FindProperty("m_Color").colorValue = Color.Red;
}

您可以做更多的事情,但这是获取 Halo 参考的方式。 请记住,GetComponent&lt;&gt; 正在搜索 Halo,而 GetComponent("Halo") 正在搜索名为 Halo 的内容。由于该组件被命名为 Halo,它的工作原理就像一个魅力。试试看

【讨论】:

    猜你喜欢
    • 2013-01-28
    • 1970-01-01
    • 2015-02-10
    • 2010-11-19
    • 1970-01-01
    • 2010-12-29
    • 2014-04-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多