Unity 2d平台控制器支持

时间:2014-02-18 16:36:20

标签: input controller unity3d sprite direction

我目前正在尝试在Unity中创建一个2d平台游戏,除了一件事,一切正常。当我向左或向右推时,我的精灵动画镜像到正确的方向。我目前正在尝试添加控制器输入,但我似乎无法向左或向右推动模拟。当向右推杆时它应该是镜像,反之亦然。

希望有人能帮助我:)。

#pragma strict

var X : float;

function Start () {
//Gathering normal object scale
X = transform.localScale.x;
}

function Update () {
    if(Input.GetKey("a")) {
    // Gamer pushes left arrow key
    // Set texture to normal position
    transform.localScale.x = -X;
}
else if (Input.GetKey("d")) {
    // Gamer pushes right arrow key
    // Flip texture
    transform.localScale.x = X;
}
if(Input.GetKey("left")) {
    // Gamer pushes left arrow key
    // Set texture to normal position
    transform.localScale.x = -X;
}
else if (Input.GetKey("right")) {
    // Gamer pushes right arrow key
    // Flip texture
    transform.localScale.x = X;
}
if(Input.GetAxis("Horizontal")) {
    // Gamer pushes left arrow key
    // Set texture to normal position
    transform.localScale.x = -X;
}
else if (Input.GetAxis("Horizontal")) {
    // Gamer pushes right arrow key
    // Flip texture
    transform.localScale.x = X;
    }
}

2 个答案:

答案 0 :(得分:1)

你有这个:

if(Input.GetAxis("Horizontal")) {
// Gamer pushes left arrow key
// Set texture to normal position
transform.localScale.x = -X;
}
else if (Input.GetAxis("Horizontal")) {
// Gamer pushes right arrow key
// Flip texture
transform.localScale.x = X;
}

第二个if将永远被调用,因为你正在检查完全相同的Input.GetAxis()。

尝试这样的事情:

if (Input.GetAxis("Horizontal") < 0)
{
    transform.localScale.x = -X;
}
else if (Input.GetAxis("Horizontal") > 0)
{
    transform.localScale.x = X;
}
  

输入.GetAxis(“水平”)检查可以按下的所有左右键,并根据左或右键吐出一个数字......

示例 的 如果我按“向左箭头”键,它将返回0到-1之间的数字。 如果我按下“向右箭头”键,它将返回0到1之间的数字。

这有意义吗?

答案 1 :(得分:0)

我会完全放弃标准的Unity输入,这简直是可怕的,并切换到InControl。

他们的API允许您检测正在使用的设备,并允许非常简单有效的多人游戏支持。

不同游戏手柄和平台的映射将让您针对标准布局进行开发,并且您将花费更少的时间尝试让控件在不同平台上或多或少地工作。