使用Unity新的第三人称控制器
一、安装Unity新的第三人称控制器
有关Unity新的第三人称控制器的知识网上已经很多了,这里就不单独介绍了,也可以去B站看我的视频
https://www.bilibili.com/video/BV1Zb4y1C7Si

由于Unity新的第三人称控制器默认使用的是新的输入系统。为了兼容前面的教程,我们需要改为新旧两种输入系统同时使用。

二、删除Main Camera,将第三人称控制器中的MainCamera、PlayerCapsule、PlayerFollowCamera拖入Hierarchy窗口。


三、将Hierarchy窗口的PlayerCapsule改名为Player3,并且Unpack。

将Inspector窗口的CharacterControlller、ThirdPersonController、PlayerInput的勾取消;加入TransformComponent

将Player3拖入Project,成为Prefab。删除Hierarchy窗口的Player3.

将Player3这个Prefab分别拖入GameManager和NetworkManager


再修改Player3这个Prefab,SynaMode改为Local,Index改为2,FixedSync勾选。

四、修改GameManager.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Net.Component;
using Cinemachine;
using UnityEngine.InputSystem;
using StarterAssets;
public class GameManager : MonoBehaviour
{
public List<GameObject> PlayerPrefabs;
private void Start()
{
ClientManager.Instance.client.OnConnectedHandle += Connected;
}
private void Connected()
{
//生成 Index=2的模型Player
SpawnPlayer(2, Vector3.zero, Quaternion.identity);
}
public void SpawnPlayer(int _modelIndex, Vector3 position, Quaternion rotation)
{
NetworkTransformBase.Identity = ClientManager.UID;
GameObject _player = Instantiate(PlayerPrefabs[_modelIndex], position, rotation);
if (_modelIndex == 2) //使用第三人称控制器
{
_player.GetComponent<CharacterController>().enabled = true;
_player.GetComponent<ThirdPersonController>().enabled = true;
_player.GetComponent<PlayerInput>().enabled = true;
GameObject.Find("PlayerFollowCamera").GetComponent<CinemachineVirtualCamera>().Follow =
_player.transform.Find("PlayerCameraRoot").transform;
}
else
{
_player.GetComponent<PlayerController>().enabled = true;
}
}
}
至此,我们完成了在GDNet中使用Unity新的第三人称控制器。

最后更新于
这有帮助吗?