2

我对 Unity 4.0.0 有疑问。当我玩 AngryBots 项目时,甚至当我使用简单的行走脚本制作自己的 char 时,它会自动行走而无需按任何按钮。

我尝试卸载 Unity,我尝试使用旧版本的 Unity,我什至将其从注册表中删除,但我仍然得到相同的行为。为什么会这样?这是一个错误,还是我做错了什么?

var speed = 6.0;
var jumpSpeed = 8.0;
var gravity = 20.0;

private var moveDirection = Vector3.zero;
private var grounded : boolean = false;

function FixedUpdate() {
    if (grounded) {
        // We are grounded, so recalculate movedirection directly from axes
        moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0, 0);
        moveDirection = transform.TransformDirection(moveDirection);
        moveDirection *= speed;

        if (Input.GetButton ("Jump")) {
            moveDirection.y = jumpSpeed;
        }
    } // Apply gravity

    moveDirection.y -= gravity * Time.deltaTime;

    // Move the controller
    var controller : CharacterController = GetComponent(CharacterController);
    var flags = controller.Move(moveDirection * Time.deltaTime);
    grounded = (flags & CollisionFlags.CollidedBelow) != 0;
}

@script RequireComponent(CharacterController)

我将这个脚本用于我所有的行走字符并且它可以工作,但现在它会自动行走。

4

3 回答 3

1

您必须使用“动画”组件,而不是“动画师”组件。(您可以通过单击“添加组件”、“其他”和“动画”来分配它。这将包含您需要的“自动播放”按钮。

于 2014-08-18T15:11:09.810 回答
1

问题是提供运动轴输入。

通常它将是另一个设备,例如操纵杆等。第一步是拔下您可能需要测试的任何其他输入设备(隔离问题 - 然后根据需要进行修复)

可能导致它的另一件事:我遇到了同样的问题,但没有插入其他输入设备。我发现一个名为 VJoy 虚拟操纵杆(作为 FreetrackNoIR 的一部分安装)的驱动程序将每个轴的运动轴值设置为 1 和 -1 ,从而导致同样的问题。

禁用此驱动程序(控制面板、设备管理器、人机界面设备)为我修复了它!

祝你好运。

于 2013-10-15T14:54:36.943 回答
1

我也有同样的事情发生在我身上。当我在编辑器和构建中将鼠标移出游戏窗口时,我的角色会向上和向左移动。

转到“编辑、项目设置、输入”并验证您的水平和垂直是否已相应设置。一旦我在 InputManager 中删除了水平和垂直的第二组输入,它就停止了这样做。

于 2016-11-17T15:47:37.710 回答