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个操纵杆。我如何区分X和Y轴的值? – Killbert
只需使用两个函数,一个返回x值,另一个返回y值。例如。函数joyStickInputX(..){return absJoyPos.x * xDirection; }。 – Verv
这个技巧。非常感谢!让我永远得到这个工作正常! – Killbert