我制作了可以統一跟隨克隆播放器的代碼。但它只適用于第一個克隆播放器。如果第二個或更晚加入房間,它找不到克隆播放器并且不起作用。我該如何解決?感謝您的幫助。
follow.cs
:
private void Awake()
{
mainCam = this;
}
void Start()
{
height = Camera.main.orthographicSize;
width = height * Screen.width / Screen.height;
}
void LateUpdate()
{
if (player == null)
{
player = GameObject.Find("Player(Clone)");
}
else
{
//transform.position = new Vector3(target.position.x, target.position.y, -10f);
transform.position = Vector3.Lerp(transform.position, target.position, Time.deltaTime * speed);
float lx = size.x * 0.5f - width;
float clampX = Mathf.Clamp(transform.position.x, -lx center.x, lx center.x);
float ly = size.y * 0.5f - height;
float clampY = Mathf.Clamp(transform.position.y, -ly center.y, ly center.y);
transform.position = new Vector3(clampX, clampY, -10f);
}
}
玩家生成腳本:
public void Spawn()
{
GameObject PI = PhotonNetwork.Instantiate("Player", Vector3.zero, Quaternion.identity);
Follow.mainCam.target = PI.transform;
Debug.Log("I'm in the room.");
}
uj5u.com熱心網友回復:
我想player
留下來null
,也許當你試圖以GameObject.Find()
他的名字命名時,那個方法會回傳null
。
也許您可以嘗試使用 atag
或使用其他名稱?
uj5u.com熱心網友回復:
最簡單的解決方案是讓相機成為玩家物件的子物件,然后通過腳本相應地改變它的位置
您還可以使用具有一些內置跟隨方法的 CineMachine
為了通過代碼更改層次結構中物件的父級,您基本上需要執行以下操作
public Transform camera
public Transform player
camera.parent = player;
然后您可以像這樣設定相機位置
camera.position = new Vector3(0, 0, -10);
由于相機是玩家0、0、-10的孩子,基本上意味著相機將在Z軸上遠離玩家(應該在玩家后面)-10。每當玩家移動時,因為相機現在是作為一個孩子連接的,所以它會跟隨玩家。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/485840.html
標籤:unity3d
上一篇:投擲物體時,它只會向右