Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.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# 如何在Unity3D中临时旋转z轴上的对象?_C#_Unity3d - Fatal编程技术网

C# 如何在Unity3D中临时旋转z轴上的对象?

C# 如何在Unity3D中临时旋转z轴上的对象?,c#,unity3d,C#,Unity3d,我正在尝试在Unity3D中为角色制作冲压动画,我需要在z轴上旋转手臂,但要使其动画化,我已经到处寻找解决方案。似乎什么都不管用。以下是我目前掌握的情况: PlayerMotor: public void Punch() { arm.transform.Rotate(0, Time.deltaTime, 0); arm.transform.position= new Vector3(arm.position.x, arm.position.y, arm.position.z +

我正在尝试在Unity3D中为角色制作冲压动画,我需要在z轴上旋转手臂,但要使其动画化,我已经到处寻找解决方案。似乎什么都不管用。以下是我目前掌握的情况:

PlayerMotor:

public void Punch() {
    arm.transform.Rotate(0, Time.deltaTime, 0);
    arm.transform.position= new Vector3(arm.position.x, arm.position.y, arm.position.z + .01f);
}

public void PunchReturn() {
    arm.transform.Rotate(0, -Time.deltaTime, 0);
    arm.transform.position = new Vector3(arm.position.x, arm.position.y, arm.position.z - .01f);
}
播放控制器:

if (Input.GetMouseButtonDown(0)) {
    // Does punching animation
    Debug.Log("punching");
    for (int i = 0; i < 50; i++) motor.Punch();
    for (int i = 0; i < 50; i++) motor.PunchReturn();
}
if(Input.GetMouseButtonDown(0)){
//打孔动画吗
调试日志(“打孔”);
对于(inti=0;i<50;i++)motor.Punch();
对于(int i=0;i<50;i++)motor.PunchReturn();
}
我同意“trollingchar”,合作项目或动画师是最好的选择。如果您想尝试使用协同程序:

采用以下方法:

// this runs "in parallel" to the rest of your code.
// the yield statements will not freeze your app.
IEnumerator AnimationCoroutine(){
    for (int i = 0; i < 50; i++) {
        motor.Punch(); // rotate a little bit
        yield return null; // waits for one frame
    }
    for (int i = 0; i < 50; i++) {
        motor.PunchReturn(); // rotate a little bit
        yield return null; // waits for one frame
    }
}

for
循环执行时不会延迟,因此会产生即时效果。您应该使用协同程序或动画师组件。
if (Input.GetMouseButtonDown(0)) {
    // Does punching animation
    Debug.Log("punching");
    StartCoroutine(AnimationCoroutine());
}