我正在制作一個相機切換系統以從第三人稱模式切換到第一人稱模式,但是當我在編輯器中進行測驗時它會更改為第三人稱,但是我無法切換回第一人稱模式,我有點新在 Unity 中,我自己制作了這個
這是相機切換腳本的代碼
{
public bool isTPMenabled = false;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
if (Input.GetKey(KeyCode.F5))
{
if (isTPMenabled == false)
{
if (isTPMenabled == true)
{
GameObject.Find("Player Camera").transform.position = new Vector3(this.transform.position.x, this.transform.position.y, this.transform.position.z);
isTPMenabled = false;
return;
}
GameObject.Find("Player Camera").transform.position = new Vector3(this.transform.position.x - 2, this.transform.position.y 2, this.transform.position.z);
isTPMenabled = true;
return;
}
}
if (Input.GetKey(KeyCode.F4))
{
GameObject.Find("Player Camera").transform.position = new Vector3(this.transform.position.x, this.transform.position.y, this.transform.position.z);
}
我用過退貨;嘗試終止腳本,但這沒有用
我的目標是如果按 F5 一次它會進入第三人稱模式,但是如果你再次按下它會回到第一人稱模式
uj5u.com熱心網友回復:
這是修改后的代碼:
void Update()
{
if (Input.GetKey(KeyCode.F5))
{
if (isTPMenabled == false)
{
GameObject.Find("Player Camera").transform.position = new Vector3(this.transform.position.x - 2, this.transform.position.y 2, this.transform.position.z);
isTPMenabled = true;
} else { // means "isTPMenabled == true"
GameObject.Find("Player Camera").transform.position = new Vector3(this.transform.position.x, this.transform.position.y, this.transform.position.z);
isTPMenabled = false;
}
}
// Omitted the unrelated F4 codes
}
這樣的邏輯更加簡潔明了。
uj5u.com熱心網友回復:
添加到我眼中的這個答案甚至更干凈
// If possible best already reference this via the Inspector
[SerializeField] private GameObject playerCamera;
private void Start ()
{
// as a Fallback do this only ONCE
if(!playerCamera) playerCamera = GameObject.Find("Player Camera");
}
void Update()
{
// NOTE: You most probably do not want to toggle this EVERY FRAME
// while the key stays pressed! You rather want to toggle ONCE per key press
if (Input.GetKeyDown(KeyCode.F5))
{
// simply toggle the flag
isTPMenabled = !isTPMenabled;
// since this is a single value assignment I'd prefer a ternary
playerCamera.transform.position = isTPMenabled ? transform.position new Vector3(-2, 2, 0) : transform.position;
}
}
如果你只是讓相機成為玩家的孩子(如果不是這樣的話)并且只是在本地空間上操作,它會變得更容易
playerCamera.transform.localPosition = isTPMenabled ? new Vector3(-2, 2, 0) : Vector3.zero;
這樣做的巨大優勢在于,它還考慮了上述尚未考慮的輪換等。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/395713.html
上一篇:通過代碼更改材料屬性未顯示
