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