http://answers.unity3d.com/questions/212189/camera-shake.html 我已經按照上面的問題的答案嘗試讓我的第一人稱相機工作。但我試圖修改它,以便相機從不可見的碰撞盒中搖晃。相機在統一碰撞3d
到目前爲止,我的相機晃動腳本看起來像這樣;
public bool Shaking;
private float ShakeDecay;
private float ShakeIntensity;
private Vector3 OriginalPos;
private Quaternion OriginalRot;
void Start()
{
Shaking = false;
}
void OnTriggerEnter(Collider collision)
{
if(collision.gameObject.name == "ShakeTrigger")
{
DoShake();
Debug.Log("The camera trigger has hit");
}
}
void Update()
{
if(ShakeIntensity > 0)
{
transform.position = OriginalPos + Random.insideUnitSphere * ShakeIntensity;
transform.rotation = new Quaternion(OriginalRot.x + Random.Range(-ShakeIntensity, ShakeIntensity)*.2f,
OriginalRot.y + Random.Range(-ShakeIntensity, ShakeIntensity)*.2f,
OriginalRot.z + Random.Range(-ShakeIntensity, ShakeIntensity)*.2f,
OriginalRot.w + Random.Range(-ShakeIntensity, ShakeIntensity)*.2f);
ShakeIntensity -= ShakeDecay;
}
else if (Shaking)
{
Shaking = false;
}
}
void OnGUI() {
if (GUI.Button(new Rect(10, 200, 50, 30), "Shake"))
DoShake();
//Debug.Log("Shake");
}
public void DoShake()
{
OriginalPos = transform.position;
OriginalRot = transform.rotation;
ShakeIntensity = 0.3f;
ShakeDecay = 0.02f;
Shaking = true;
}
我知道代碼通過gui按鈕100%工作。該腳本附加到第一人稱控制器上的相機。遊戲中有一個標籤爲ShakeTrigger的隱形碰撞盒。但是,調試日誌根本不會被調用,我不確定原因。
如果有人需要更多信息,請告訴我。
感謝提前:)
「不可見」框對撞機是否檢查了「觸發器」?否則,OnTriggerEnter永遠不會被調用。還要確保相機連接到剛體碰撞器。 [這裏是一個很好的鏈接](http://docs.unity3d.com/Documentation/Components/class-MeshCollider.html)Unity的碰撞矩陣。 – Jerdak
碰撞盒確實有'是觸發'檢查。我已經在一個單獨的腳本中附加了一些聲音,可以正常工作。具有這個腳本的攝像機是附屬於第一人稱控制器的「主攝像機」(我猜測它已經有了剛體)。仍然沒有得到這種方法工作正常:( – TJBaldy