[Unity]關於多角色自由切換主操作角色的問題

昨天羣裏一個朋友說他想嘗試着做一個多主角的遊戲。

比如一個小隊三個角色,可以自由的切換其中一個爲主操作角色,其他的變成AI。

這個問題其實有很多種解決方法,我這裏有一個最簡單的方法。

想法的示例圖如下:


新建一個空物體作爲多角色切換的管理,用Tab鍵來切換角色。

	public GameObject[] MainPlayer;

	private GameObject mpMainPlayer;// 主要角色

	Vector3 forward;

	public float speed = 1.0f;

	[SerializeField]
	private int iCharcaterCount = 0;

	void Start()
	{
		forward = this.transform.TransformDirection(Vector3.forward);
	}

	void Update()
	{
		ChangeCharacter ();
		SimpleMove ();
	}

	void ChangeCharacter()//角色切換
	{
		if(Input.GetKeyDown(KeyCode.Tab))
		{
			iCharcaterCount++;
			if(iCharcaterCount >= MainPlayer.Length)
			{
				iCharcaterCount = 0;
			}
			mpMainPlayer = null;
		}

		switch(iCharcaterCount)
		{
		case 0 :
		{
			if(mpMainPlayer == null){mpMainPlayer = MainPlayer[0];Debug.Log(mpMainPlayer.name);}
			if(MainPlayer[0].GetComponent<CharacterController>() == null)
			{
				MainPlayer[0].AddComponent<CharacterController>();
			}
		}break;
		case 1: 
		{
			if(mpMainPlayer == null){mpMainPlayer = MainPlayer[1];Debug.Log(mpMainPlayer.name);}
			if(MainPlayer[1].GetComponent<CharacterController>() == null)
			{
				MainPlayer[1].AddComponent<CharacterController>();
			}
		}break;
		case 2 :
		{
			if(mpMainPlayer == null){mpMainPlayer = MainPlayer[2];Debug.Log(mpMainPlayer.name);}
			if(MainPlayer[2].GetComponent<CharacterController>() == null)
			{
				MainPlayer[2].AddComponent<CharacterController>();
			}
		}break;

		default :
				break;
		}
	}

	void SimpleMove()//移動
	{
		if(Input.GetKey(KeyCode.W))
		{
		if (mpMainPlayer.GetComponent<CharacterController> () != null) 
		{
			mpMainPlayer.GetComponent<CharacterController>().SimpleMove(forward * speed);
		}
		}
	}
這樣就可以較爲簡單的做到切換角色了。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章