一旦它們被拾起,我正在嘗試將帶有“椅子”標簽的物件設定為它們的原始旋轉。
這是我試圖做的:
if (currentlyPickedUpObject != null)
{
if (currentlyPickedUpObject.tag == "chair")
{
lookRot = Quaternion.LookRotation(mainCamera.transform.position - pickupRB.position);
lookRot = Quaternion.Slerp(mainCamera.transform.rotation, lookRot, rotationSpeed * Time.fixedDeltaTime);
//pickupRB.MoveRotation(lookRot);
Vector3 angles = new Vector3(-90, 0, pickupRB.transform.eulerAngles.z);
pickupRB.transform.rotation = Quaternion.Euler(angles);
}
reticle.enabled = false;
}
但這不適用于場景中的所有椅子,有些正在作業,有些則以不同的方式旋轉。
我希望所有帶有此標簽的物件在玩家撿起它們時都能獲得它們的原始旋轉。有些secnes有一把椅子,而另一些有兩把或更多。因此,如果有一種方法可以在我不設定椅子數量及其原始值的情況下自動進行輪換,那將非常有用。請幫忙
更新:根據derHugo
的回答,我添加了這個腳本并將它附加到我場景中的所有椅子上。這是腳本:
public class Chair: MonoBehaviour
{
Interactions interaction;
private Quaternion originalRotation;
private GameObject game;
void Start()
{
originalRotation = transform.rotation;
GameObject playerinter = GameObject.Find("ThePlayer");
interaction = playerinter.GetComponent<Interactions>();
}
private void Update()
{
if (interaction.currentlyPickedUpObject == game )
{
ResetRotation();
}
}
// Update is called once per frame
public void ResetRotation()
{
transform.rotation = originalRotation;
}
}
現在,椅子總是設定為原來的旋轉,即使它們被扔掉,它們也會恢復原來的旋轉!這不應該發生,它應該只在它們被拾取時重置旋轉。(如果它們被扔掉或被另一個物體擊中,它們應該根據正確的物理原理掉落)。
uj5u.com熱心網友回復:
您可以簡單地存盤原始旋轉并稍后將其分配回來
例如,您可以在椅子上放置一個組件,例如
public class RotationResetter : MonoBehaviour
{
private Quaternion originalRotation;
private void Start()
{
originalRotation = transform.rotation;
}
public void ResetRotation()
{
transform.rotation = originalRotation;
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/521517.html
標籤:C#unity3d