我目前正在尝试在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;
}
}
答案 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允许您检测正在使用的设备,并允许非常简单有效的多人游戏支持。
不同游戏手柄和平台的映射将让您针对标准布局进行开发,并且您将花费更少的时间尝试让控件在不同平台上或多或少地工作。