角色开始自动行走,没有任何输入

时间:2013-07-10 14:30:48

标签: unity3d

Unity 4.0.0存在问题。当我玩AngryBots项目时,或者当我使用简单的步行脚本制作自己的字符时,它会自动走动而无需按任何按钮。

我尝试卸载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)

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

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

问题在于提供运动轴输入。

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

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

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

祝你好运。