Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.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#_Unity3d_Animation - Fatal编程技术网

C# 统一:为什么动画在进入触发器时不播放?

C# 统一:为什么动画在进入触发器时不播放?,c#,unity3d,animation,C#,Unity3d,Animation,我有两个游戏对象,一个是框对撞机(比如老虎),另一个是框对撞机设置为触发器(比如马)。我希望我的动画“命中”在老虎游戏对象停留在触发器中时播放,当它退出触发器时,我希望它继续播放“空闲”动画。我设置了两个参数,也称为“hit”和“idle”作为触发器。但是没有一个动画正在播放。有人能帮忙吗 using System.Collections; using System.Collections.Generic; using UnityEngine; public c

我有两个游戏对象,一个是框对撞机(比如老虎),另一个是框对撞机设置为触发器(比如马)。我希望我的动画“命中”在老虎游戏对象停留在触发器中时播放,当它退出触发器时,我希望它继续播放“空闲”动画。我设置了两个参数,也称为“hit”和“idle”作为触发器。但是没有一个动画正在播放。有人能帮忙吗

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

    public class newAttack : MonoBehaviour {

        public GameObject tiger;
        int hitHash = Animator.StringToHash("hit");
        int exitHash = Animator.StringToHash("idle");

       Animator myAnimation;

        private void Start()
        {
            myAnimation = GetComponent<Animator>();

        }


        void OnTriggerStay(Collider other)
        {
            Debug.Log("Inside Trigger");
            myAnimation.SetTrigger(hitHash);
        }



        private void OnTriggerExit(Collider other)
        {
             Debug.Log("Exit Trigger");
             myAnimation.SetTrigger(exitHash);         
        }

    }
使用系统集合;
使用System.Collections.Generic;
使用UnityEngine;
公共类攻击:单行为{
公众游戏对象老虎;
int hitHash=Animator.StringToHash(“hit”);
int exitHash=Animator.StringToHash(“空闲”);
动画师;
私有void Start()
{
myAnimation=GetComponent


我认为您没有正确设置动画制作者。要使参数正常工作(例如bool-enter),您必须从空闲转换到命中(条件:输入true)以及从命中转换到空闲(条件:输入false)。然后使用脚本在触发器停留和退出时切换该条件。

您的对象是否有刚体?是否调用调试?您应该使用OnTriggerEnter而不是stay。或者使用布尔值而不是触发器。顺便说一句,如果您提供更多的项目(与动画相关),这里可能会出现数百个问题我们可以提供更好的帮助。拥有animator窗口的图像可以帮助我们理解问题。可能是您有“任何状态”通过“hit”连接到“hit_anim”,因此,它会“停留”在第一帧中,只要物体发生碰撞。你能给我们提供动画师窗口或它的图表吗?@NathaliaSoragge,是的,我的老虎对象有一个刚体,但我的马是触发器,它没有刚体。我知道触发器需要一个带BoxCollider的刚体,另一个应该是BoxCollider按原样触发。@Bijan我使用unity资产商店中的免费资产“Golden Tiger 1.0”。马的资产是免费的,但现在已被弃用。@comhonia谢谢你,使用布尔帮助了我。我删除了触发参数,并根据布尔参数调用了动画师的play方法。它起作用了。很高兴我能提供帮助