Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.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# 声明要设置动画的游戏对象_C#_Animation_Unity3d_Unity5 - Fatal编程技术网

C# 声明要设置动画的游戏对象

C# 声明要设置动画的游戏对象,c#,animation,unity3d,unity5,C#,Animation,Unity3d,Unity5,我有一个教程场景,你穿过关卡到达一个特定的门,当你与它碰撞时,它会禁用顶部的画布,并设置门的动画。我在脚本文档中到处搜索,但找不到解决方案。您声明要设置动画的对象是什么类型的变量 我试图声明public GameObject/Transform UIQuest和UIQuest.Animation.Play(“DoorOpen”),但它出现了一个错误,即在API中没有动画。我是完全错了,还是我遗漏了一些简单的东西 完整脚本: using UnityEngine; using System.Coll

我有一个教程场景,你穿过关卡到达一个特定的门,当你与它碰撞时,它会禁用顶部的画布,并设置门的动画。我在脚本文档中到处搜索,但找不到解决方案。您声明要设置动画的对象是什么类型的变量

我试图声明
public GameObject
/
Transform UIQuest
UIQuest.Animation.Play(“DoorOpen”)
,但它出现了一个错误,即在API中没有
动画。我是完全错了,还是我遗漏了一些简单的东西

完整脚本:

using UnityEngine;
using System.Collections;
using UnityEngine.UI;

public class DoorOpen : MonoBehaviour {

    public GameObject door;

    public Canvas UIQuest;

    void Start () {

    }

    void Update () {

    }

    void OnCollisionEnter(Collision doorCollision)
    {
        if (doorCollision.gameObject.name == "Door")
        {
            door.Animation.Play("DoorOpen");
            UIQuest.enabled = false;
        }
    }
}

由于游戏对象只执行简单的动画,您不需要任何特殊的东西(如AnimationController),您只需执行门随时间的旋转,将门的枢轴设置为边缘,并在满足条件时(即检测到碰撞时)沿y轴旋转门

比如:

gameobject.transform.Rotate(0, rotationAmount * Time.DeltaTime, 0);

您还需要逻辑来决定何时停止旋转(即门完全打开时),除非您需要旋转门。此外,如果门只是一个滑动门,则执行平移而不是旋转更容易。

由于游戏对象只执行简单的动画,您不需要任何特殊的东西(如AnimationController),您只需要执行门随时间的旋转,将门的枢轴设置为边缘,并在满足条件(即检测到碰撞)时沿y轴旋转门

比如:

gameobject.transform.Rotate(0, rotationAmount * Time.DeltaTime, 0);

您还需要逻辑来决定何时停止旋转(即门完全打开时),除非您需要旋转门。此外,如果门只是一个滑动门,则执行平移而不是旋转更容易。

门是什么类型的对象?它只是一个你正在旋转的平面还是一个实际的模型?如果是这样的话,门是否定义了任何动画以及连接到对象的动画控制器?@Matthew Pigram这是一个简单的立方体,我已重新缩放以适应大小。您不需要任何特殊的东西,只需随时间旋转门,当条件满足时(即检测到碰撞时),将门的枢轴设置为拐角,并沿y轴旋转门。类似于
gameobject.transform.Rotate(0,rotationAmount*Time.DeltaTime,0)
门是什么类型的对象?它只是一个你正在旋转的平面还是一个实际的模型?如果是这样的话,门是否定义了任何动画以及连接到对象的动画控制器?@Matthew Pigram这是一个简单的立方体,我已重新缩放以适应大小。您不需要任何特殊的东西,只需随时间旋转门,当条件满足时(即检测到碰撞时),将门的枢轴设置为拐角,并沿y轴旋转门。类似于
gameobject.transform.Rotate(0,rotationmount*Time.DeltaTime,0)
一个简单的问题,我如何将轴心点设置到边缘?我尝试过使用一个空的游戏对象,并将门设置为小孩,但它仍然在中心旋转。你走对了!在本例中,您将旋转空的游戏对象,而不是旋转门。在旋转游戏对象之前,请确保将其放置在门的边缘。我的方法是在door脚本中创建一个名为PivotPoint的公共变量,类型为Gameobject,然后在编辑器中将作为轴心的空Gameobject拖动到inspector中的变量中,然后在脚本中通过其变换旋转轴心点:数据轴心似乎工作,但是Unity说它对DeltaTime没有定义。是deltaTime,还是我必须引用其他内容?对不起,是的,我认为它是deltaTime,应该类似于时间。deltaTime
好的,实际上还有一个问题,停止旋转的逻辑是什么?我想出了一个似乎可以(但不能)工作的方法:
if(pivot.transform.rotation.eulerAngles.y==83){pivot.GetComponent().freezeRotation=true;}
但它似乎仍然可以旋转——仅仅是一个简单的问题,我如何将轴心点设置到边缘?我尝试过使用一个空的游戏对象,并将门设置为小孩,但它仍然在中心旋转。你走对了!在本例中,您将旋转空的游戏对象,而不是旋转门。在旋转游戏对象之前,请确保将其放置在门的边缘。我的方法是在door脚本中创建一个名为PivotPoint的公共变量,类型为Gameobject,然后在编辑器中将作为轴心的空Gameobject拖动到inspector中的变量中,然后在脚本中通过其变换旋转轴心点:数据轴心似乎工作,但是Unity说它对DeltaTime没有定义。是deltaTime,还是我必须引用其他内容?对不起,是的,我认为它是deltaTime,应该类似于时间。deltaTime好的,实际上还有一个问题,停止旋转的逻辑是什么?我想到了一个似乎应该有效(但没有)的方法:
if(pivot.transform.rotation.eulerAngles.y==83){pivot.GetComponent().freezeRotation=true;}
但它似乎仍然会永远旋转