2014-03-29 72 views
0

我在Unity中使用单一游戏杆脚本时遇到问题。游戏杆输入仅对角线移动对象

我使用下面的脚本通过刚体移动斩波器。当我用箭头键统一测试游戏时,一切都按预期完美运行。但是,如果我在手机上进行测试,斩波器只能从左下角向右上角对角移动。

我相信它与我将摇杆附加到X轴的方式有关,但我没有发现我的错误......任何人都可以用一双新的眼睛看这个,并告诉我我在哪里搞砸了?

#pragma strict 

var speed : float = 500.0; 
var smooth : float = 2.0; 
var gravity : float = 0.0; 
var moveJoystick : Joystick; 


    function FixedUpdate() { 

    var horPos = Input.GetAxis ("Horizontal") ? 
        Input.GetAxis ("Horizontal") : joyStickInput(moveJoystick); 
var verPos = Input.GetAxis ("Vertical") ? 
       Input.GetAxis ("Vertical") : joyStickInput(moveJoystick); 


    var movedirection = new Vector3(horPos, 0, verPos); 

if (movedirection != Vector3.zero){ 
     var newRotation = Quaternion.LookRotation(movedirection * -1); 
     transform.rotation = Quaternion.Slerp(transform.rotation, newRotation,  Time.deltaTime * smooth); 
     } 
    rigidbody.AddForce (movedirection * speed * Time.deltaTime); 
    } 

    function joyStickInput (joystick : Joystick) { 
    var absJoyPos = Vector2 (Mathf.Abs(joystick.position.x), 
           Mathf.Abs(joystick.position.y)); 
    var xDirection = (joystick.position.x > 0) ? 1 : -1; 
    var yDirection = (joystick.position.y > 0) ? 1 : -1; 
    return ((absJoyPos.x > absJoyPos.y) ? absJoyPos.x * xDirection : absJoyPos.y * yDirection); 
    } 

回答

1

由于horPos和verPos使用相同的joyStickInput(moveJoystick)?

当按下右侧的按钮,你joyStickInput()将返回1个 集horPos和verPos为相同的值(1),它会让你的精灵朝上方移动(Y + 1)右(X + 1)

+0

是的,但我该如何解决?我只想用1个操纵杆。我如何区分X和Y轴的值? – Killbert

+0

只需使用两个函数,一个返回x值,另一个返回y值。例如。函数joyStickInputX(..){return absJoyPos.x * xDirection; }。 – Verv

+0

这个技巧。非常感谢!让我永远得到这个工作正常! – Killbert