【问题标题】:Unity C# GameObject collides with another GameObjectUnity C# GameObject 与另一个 GameObject 发生碰撞
【发布时间】:2013-06-05 15:56:13
【问题描述】:

我有一个无敌的GameObject 叫触发器,当我的英雄撞到它时,一盏吊灯掉了下来。 我想给枝形吊灯一个Rigidbody,让它掉下来,你可以和它碰撞,也许可以使用它。

如果你能向我解释碰撞是如何工作的,并展示如何在游戏对象发生碰撞时做某事,那么它在 Unity 中仍然很酷。

using UnityEngine;
using System.Collections;

public class Collider : MonoBehaviour {
    public GameObject chandelier;

    // Use this for initialization
    void Start () {

    }

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

    }

    //When my hero collides with trigger go to the fall function
    void OnTriggerEnter (Collider other) {

        if (other.tag == "Trigger")
        {
            fall(); 
        }
    }

    //Add Rigidbody to the GameObject called chandelier
    void fall ()
    {
        chandelier.rigidbody.AddForce(1, 1, 1);
    }
}

【问题讨论】:

标签: c# unity3d


【解决方案1】:

为了使碰撞起作用,至少有一个碰撞的游戏对象必须附加一个刚体,因为您使用 OnTriggerEnter 方法,所以以下设置应该起作用:

第一个对象:

-collider(标记为触发器)

-刚体(标记为运动学)

第二个对象

-collider(标记为触发器)

然后当物体碰撞时,“OnTriggerEnter”方法将被调用,你可以添加物理 刚体到第二个对象,请注意,您不能像您在帖子中提到的那样添加刚体

// This will cause to Exception if there is no rigidbody attached
chandelier.rigidbody.AddForce(1,1,1);

所以基本上你必须选择:

-通过 Unity 编辑器为您的游戏对象添加一个刚体并将其设置为运动学,然后在您的碰撞方法中删除“Is kinematic”标志,如下所示:

rigidbody.isKinematic = false;

-使用以下代码添加碰撞后的刚体:

gameObject.AddComponent< Rigidbody >();

之后,您可以添加所需的力,或者如果您只想让它下落,只需将重力添加到刚体:

rigidbody.useGravity = true;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-28
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    相关资源
    最近更新 更多