C# 如何创建此动画过渡?
我正在使用3D头像,这是我第一次使用动画。我已经完成了一个从空闲动画到另一个动画的转换。当滑块的值低于40时,它会进行转换,代码如下:C# 如何创建此动画过渡?,c#,unity3d,animation,animator,C#,Unity3d,Animation,Animator,我正在使用3D头像,这是我第一次使用动画。我已经完成了一个从空闲动画到另一个动画的转换。当滑块的值低于40时,它会进行转换,代码如下: public Slider barraAlimento; void Start() { anim = GetComponent<Animator>(); } void Update() { if (barraAlimento.value <= 40) { anim.SetBool("IrHambrient
public Slider barraAlimento;
void Start()
{
anim = GetComponent<Animator>();
}
void Update()
{
if (barraAlimento.value <= 40)
{
anim.SetBool("IrHambriento", true);
}
else
{
anim.SetBool("IrHambriento", false);
}
}
public-Slider-barralimento;
void Start()
{
anim=GetComponent我相信你在寻找一个触发器而不是bool
将动画师中的布尔值从布尔更改为触发器,并将代码更改为
void ButtonManzanaClicked()
{
anim.SetTrigger("IrComiendo");
}
这将使每次“触发”触发器时都发生转换,就像一次性事件一样,不需要任何布尔值true->false来重置,就像您在代码中尝试的那样
我认为,你的代码不起作用的原因是,你在同一帧中将其设置回false
,我认为动画系统会查看每个代码帧末尾的值,可以这么说。我认为你在寻找触发器而不是bool
将动画师中的布尔值从布尔更改为触发器,并将代码更改为
void ButtonManzanaClicked()
{
anim.SetTrigger("IrComiendo");
}
这将使每次“触发”触发器时都发生转换,就像一次性事件一样,不需要任何布尔值true->false来重置,就像您在代码中尝试的那样
我认为,代码不起作用的原因是,在同一帧中将代码设置回false
,我认为动画系统会查看每个代码帧末尾的值,可以这么说。这可能是因为:
void ButtonManzanaClicked()
{
anim.SetBool("IrComiendo", true);
anim.SetBool("IrComiendo", false);
}
在将其设置为true之后,立即将其设置为false
尝试仅在按钮单击事件中放置anim.SetBool(“IrComiendo”,true);
,并且anim.SetBool(“IrComiendo”,false);
仅当您希望它返回到“Hambriento”动画时
编辑:
尝试这样做:
将“IrComiendo”更改为触发器(只是不需要将其值更改为false)
OBS:使用anim.SetTrigger(“IrComiendo”);
调用它
如图所示设置连接:
*如果单击按钮后滑块的值不可能仍然小于40,则无需连接
**如果你想让它转到Comiendo,即使它不是hambriento,也要连接它
OBS:在按钮方法中,您只需更改滑块的值并调用“IrComiendo”
希望它有所帮助这可能是因为:
void ButtonManzanaClicked()
{
anim.SetBool("IrComiendo", true);
anim.SetBool("IrComiendo", false);
}
在将其设置为true之后,立即将其设置为false
尝试仅在按钮单击事件中放置anim.SetBool(“IrComiendo”,true);
,并且anim.SetBool(“IrComiendo”,false);
仅当您希望它返回到“Hambriento”动画时
编辑:
尝试这样做:
将“IrComiendo”更改为触发器(只是不需要将其值更改为false)
OBS:使用anim.SetTrigger(“IrComiendo”);
调用它
如图所示设置连接:
*如果单击按钮后滑块的值不可能仍然小于40,则无需连接
**如果你想让它转到Comiendo,即使它不是hambriento,也要连接它
OBS:在按钮方法中,您只需更改滑块的值并调用“IrComiendo”
希望它有帮助我试过了,但是当它必须做第一个动画(哈姆布里安托)时,它只做这个新的动画(Comiendo),它不会返回到以前的动画。我试过了,但是当它必须做第一个动画(哈姆布里安托)时,它只做这个新的动画(Comiendo),它不会返回到上一个动画。我不知道为什么它不工作。我尝试只将anim.SetBool(“IrComiendo”,true);放在按钮单击事件中以检查该部分是否工作,但当我单击按钮时它不会执行动画。相反,第一次在空闲动画和“Hambriento”之间进行转换动画,但它不会进入“Comiendo”动画。第二次,它从空闲动画进入“Comiendo”动画并在那里停止,不返回任何动画。第一次单击按钮时IrComiendo的值是否为真?从Hambriento到Comiendo的转换条件是否设置为IrComiendo=真?是的,在条件中设置为真。我尝试编写anim.SetBool(“IrComiendo”,false);
在Start()方法的开头,现在它第一次进入Comiendo动画,而不是第二次(不按按钮)。因此,您希望它第一次单击按钮时进入Hambriento,第二次单击按钮时进入Comiendo动画,对吗?如果是这样,在button方法中,您可以获得“IrHambriento”使用anim.GetBool(“IrHambriento”)和do anim.SetBool(“IrComiendo”,true);如果是真的。不,对不起,不是这样。每次滑块的值(随着时间的推移而减小)为40时,它都必须返回到空闲动画。我不知道为什么它不起作用。我尝试只放置anim.SetBool(“IrComiendo”,true);在button click事件中,检查该部分是否工作,但当我单击按钮时,它不会执行动画。相反,第一次在空闲动画和“Hambriento”动画之间进行转换,但不会转到“Comiendo”动画。第二次,它从空闲动画转到“Comiendo”“动画并在那里停止,不返回任何动画。第一次单击按钮时IrComiendo的值是否为真?从Hambriento到Comiendo的转换条件是否设置为IrComiendo=真?是的,在条件中设置为真。我尝试编写anim.SetBool(“IrComiendo”,false)
在Start()方法的开头,现在它第一次进入Comiendo动画,而不是第二次(不按按钮)。因此,您希望它第一次单击按钮时进入Hambriento,第二次单击按钮时进入Comiendo动画,对吗?如果