Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Unity帮助-旋转不工作:(_C#_Unity3d_Rotation - Fatal编程技术网

C# Unity帮助-旋转不工作:(

C# Unity帮助-旋转不工作:(,c#,unity3d,rotation,C#,Unity3d,Rotation,好的,我正在unity 2D中制作一个平台。我为一个角色制作了一些动画,并附加了一个玩家控制器(打、踢和阻挡,效果很好)。当我移动时,我的玩家控制器计算他的速度,并根据其值,如果他没有跳跃或阻挡/踢/打,他将处于“行走”或“奔跑”状态(如果没有空闲)。基本上这只是意味着他的四肢以一定的速度旋转(四肢是玩家的孩子,玩家是家长) 然而,这个简单的任务变得很难。我最初有以下脚本来让肢体旋转: using System.Collections; using System.Collections.Gene

好的,我正在unity 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)。发生了什么事?我遗漏了什么吗


我只想让他的四肢随着时间摆动。

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


正如您所见,我的文件中有一个变量叫做“animator”。您应该搜索有关unity animator的教程,这些都非常有用。如果没有,希望这会有所帮助。我很抱歉,我认为这项简单的任务变得很难,因为您的操作非常复杂。您考虑过使用animator组件吗?您可以使用更灵活、可读性更强的代码触发同一动画的不同速度。您还可以设置动画速度的修改器,以精确控制速度。感谢您的回复,但我不确定您是否理解这个问题。速度不是问题-我的播放器控制器的一部分测量他的水平速度和d如果不在任何其他动画中,则根据其值将其置于“行走”或“奔跑”状态,这只会以不同的速度播放同一动画。问题在于动画本身。