Unity帮助 - 旋转不起作用:(

时间:2017-12-31 17:55:56

标签: c# unity3d rotation

好的,所以我正在制作统一2D的平台游戏。我有一些动画用于附加玩家控制器的角色(拳击,踢和块,它工作正常)。当我移动时,我的玩家控制器计算他的速度并根据其值,如果他没有跳跃或阻挡/踢/打击,他将处于“行走”或“跑步”状态(如果不是空闲的话)。基本上这只意味着他的肢体以一定的速度旋转(四肢是玩家的孩子,他们是父母)。

然而,这个简单的任务变得艰难。我最初有以下脚本让肢体旋转:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Rotation : MonoBehaviour {

 private int b;

 void FixedUpdate () {
     b = PlayerController.b;
     float y = transform.localEulerAngles.z;
     transform.RotateAround (transform.position, Vector3.forward, 
b*45*Mathf.Sin(3*Time.fixedTime)-y);
 }
}

(忽略'b')。

这个工作正常,直到我把角色转向左边,当旋转开始变得乱七八糟。

我决定简化并使用以下脚本进行旋转。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Rotation : MonoBehaviour {

float y;

void Start(){
    y = transform.localRotation.z;
    Debug.Log (y);
}

void FixedUpdate () {
    float u = y + 45 * Mathf.Sin (3 * Time.fixedTime);
    Quaternion rot = transform.localRotation;
    rot.z = u;
    Debug.Log (u);
    transform.localRotation = rot;
    }
}

怎么会出错?这根本不是旋转的。我已经尝试调试角度,并注意到(我正在看的肢体)的角度改变了几秒钟(即使我看不到任何旋转),然后卡在一定值(通常约45) 。怎么了?我错过了什么吗?

我只想让他的四肢随时间振荡。

1 个答案:

答案 0 :(得分:1)

我认为最好制作一个行走动画,然后播放它的方法是可以拥有一个bool isWalking之类的变量,然后说 if(isWalking){ animator.play(walkAnimation); }

如您所见,我的变量中有一个名为“ animator”的变量。您应该搜索有关统一动画师的教程,这些教程非常有帮助。希望这会有所帮助,如果不是这样,我很抱歉