[Unity]关于多角色自由切换主操作角色的问题

昨天群里一个朋友说他想尝试着做一个多主角的游戏。

比如一个小队三个角色,可以自由的切换其中一个为主操作角色,其他的变成AI。

这个问题其实有很多种解决方法,我这里有一个最简单的方法。

想法的示例图如下:

[Unity]关于多角色自由切换主操作角色的问题_第1张图片

新建一个空物体作为多角色切换的管理,用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() == null)
			{
				MainPlayer[0].AddComponent();
			}
		}break;
		case 1: 
		{
			if(mpMainPlayer == null){mpMainPlayer = MainPlayer[1];Debug.Log(mpMainPlayer.name);}
			if(MainPlayer[1].GetComponent() == null)
			{
				MainPlayer[1].AddComponent();
			}
		}break;
		case 2 :
		{
			if(mpMainPlayer == null){mpMainPlayer = MainPlayer[2];Debug.Log(mpMainPlayer.name);}
			if(MainPlayer[2].GetComponent() == null)
			{
				MainPlayer[2].AddComponent();
			}
		}break;

		default :
				break;
		}
	}

	void SimpleMove()//移动
	{
		if(Input.GetKey(KeyCode.W))
		{
		if (mpMainPlayer.GetComponent () != null) 
		{
			mpMainPlayer.GetComponent().SimpleMove(forward * speed);
		}
		}
	}
这样就可以较为简单的做到切换角色了。


你可能感兴趣的:(杂项记录)