我正在创建一个本地多人游戏,其中 2 个玩家使用相同的键盘来输入控制。我为玩家创建了两种不同的控制方案,但我正在努力寻找一种方法来为每个玩家角色分配不同的方案,以及如何检查哪个玩家正在使用哪个方案等
转到 Unity GetAxis,您可以从
添加另一个轴编辑 > 项目设置 > 输入管理器
如果您通过名称“2ndPlayerHorizontal”、“2ndPlayerVertical”创建另外 2 个轴,并在玩家上放置标签(“FirstPlayer”、“SecondPlayer”)
您可以使用此代码:
using UnityEngine;
using System.Collections;
public class PlayersMovement: MonoBehaviour
{
public float speed = 10.0f;
public float rotationSpeed = 100.0f;
float translation;
float rotation;
void Update()
{
if(this.CompareTag("FirstPlayer")
{
//1st player
translation = Input.GetAxis("Vertical") * speed;
float rotation = Input.GetAxis("Horizontal") * rotationSpeed;
}
if(this.CompareTag("SecondPlayer")
{
//2nd player
translation = Input.GetAxis("Vertical") * speed;
rotation = Input.GetAxis("Horizontal") * rotationSpeed;
}
translation *= Time.deltaTime;
rotation *= Time.deltaTime;
transform.Translate(0, 0, translation);
transform.Rotate(0, rotation, 0);
}
}
如果您指的是InputControlScheme(https://docs.unity3d.com/Packages/[email protected]/api/UnityEngine.InputSystem.InputControlScheme.html),那么您需要一个自定义类来监视该方案独立于设备或第三方工具以使其正常工作。
我尝试了自定义 PlayerInputManager 组件。但是,我还没有让它发挥作用。尝试此操作的完整场景(希望有一天能够修复使其完全正常工作)发布在 https://discussions.unity.com/t/2-players-1-keyboard-custom-playerinputmanager-to-handle-与多个玩家共享设备/1535785