【问题标题】:Horizontal axis not working after animation动画后水平轴不起作用
【发布时间】:2015-07-21 06:48:00
【问题描述】:

所以,我构建了一个简单的汽车游戏,并附上了一个脚本,允许它在两个轴上移动。我创建了一个动画,因此如果汽车倒转,可以选择按下“f”按钮并将汽车翻转回正常状态。不幸的是,一旦动画播放并且汽车翻转回到它的轮子上,汽车就会向前和向后移动,但不会旋转。

可能是什么问题?

这是脚本:

var speed : float = 10.0;
var rotationSpeed : float = 100.0;
var CarFlip : Animator;

function Start () {
CarFlip.enabled = false;
}

function Update () {
var translation : float = Input.GetAxis ("Vertical") * speed;
var rotation : float = Input.GetAxis ("Horizontal") * rotationSpeed;
translation *= Time.deltaTime;
rotation *= Time.deltaTime;
transform.Translate (0, 0, translation);
transform.Rotate (0, rotation, 0);
if(Input.GetKeyUp(KeyCode.F)){
    CarFlip.enabled = true;
}
if(Input.GetKeyDown(KeyCode.B)){
            speed = 30;
        }
if(Input.GetKeyUp(KeyCode.B)){
            speed = 15;
        }
}

【问题讨论】:

  • 请不要使用 [car] 标签。 car指的是R语言下的car包,不是可驾驶汽车”

标签: animation unity3d unityscript


【解决方案1】:

Animator 会在每一帧更新变换,因此您在 Update() 中的更改会被覆盖。

如果您想覆盖它所做的事情,您需要在 LateUpdate() 期间应用您的更改。

【讨论】:

    【解决方案2】:

    我认为动画师仍处于启用状态,导致旋转卡住。也许可以尝试这样的测试,看看将 animator 设置为 false 是否会让汽车再次旋转:

    if(Input.GetKeyDown(KeyCode.F))
    {
       CarFlip.enabled = true;
    }
    if(Input.GetKeyUp(KeyCode.F))
    {
       CarFlip.enabled = false;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-07
      • 1970-01-01
      • 2013-06-29
      • 2012-08-13
      • 1970-01-01
      • 2013-11-11
      • 2019-01-06
      相关资源
      最近更新 更多