使用首选键可以统一移动玩家

时间:2016-05-31 10:43:17

标签: c# unity3d multiplayer

我试图通过添加两个球以不同的方式完成滚球教程(https://unity3d.com/learn/tutorials/projects/roll-ball-tutorial)。 所以两个玩家可以玩游戏。 但我面临的问题是,我想配置第二个玩家的首选键,如第一个玩家使用传统的箭头键,第二个玩家使用w,a,s,d向左上移动向右...我的第一个玩家的急剧代码是......

using UnityEngine;
using System.Collections;

public class PlayerController : MonoBehaviour {

public float speed;

private Rigidbody rb;
void Start()
{
    rb = GetComponent<Rigidbody> ();
}

void FixedUpdate()
{
    float moveHorizontal = Input.GetAxis("Horizontal");
    float moveVertical = Input.GetAxis("Vertical");

    Vector3 movement = new Vector3 (moveHorizontal, 0.0f, moveVertical);                //Values for movement vector 3 takes three arguments like x y z for positions.

    rb.AddForce (movement * speed);
}
}

如果有人有解决方案,请告诉我

2 个答案:

答案 0 :(得分:3)

回答类似问题here

要求您不要修改密钥控件的最简单的解决方案是不使用public class TestClassA{ @Rule public MockitoRule rule = MockitoJUnit.rule(); @Spy ClassA instanceA; public String testTheMethodToBeTested{ doNothing().when(instanceA).methodB(); String result = instanceA.methodToBeTested(); String expected = "foo" assertTrue(result.equals(expected)); } ... } 。使用ClassB及其Mockito枚举检测每次按键。问题解决了!现在从编辑器中分配两个球。如果你想要的话,你可以很容易地修改它以使用一个球。

Input.GetAxis

答案 1 :(得分:1)

您可以在edit -> project settings -> Input中定义更多输入。要添加更多输入,只需增加大小值并配置新值。至少输入新输入的名称和键。最后,在您的代码中,使用您在项目设置中指定的名称调用播放器2的新输入。

void FixedUpdate()
{
    //float moveHorizontal = Input.GetAxis("Horizontal");
    //float moveVertical = Input.GetAxis("Vertical");

    // example for player 2
    float moveHorizontalPlayer2 = Input.GetAxis("HorizontalPlayer2");
    float moveVerticalPlayer2 = Input.GetAxis("VerticalPlayer2");

    Vector3 movement = new Vector3 (moveHorizontalPlayer2 , 0.0f, moveVerticalPlayer2 );

    rb.AddForce (movement * speed);
}