我创建了一个Animator Controller (称为Player),并将其分配给我的类人化身的Animator字段,以及具有适当转换的简单动画状态。请看两张附呈的图片。
我已经将包含以下代码的脚本附加到我的化身游戏对象中,但我想知道我遗漏了什么或者做错了什么,从Idle到Walk的转换没有发生,尽管我可以看到,当我按W时,speed变量增加了。
谁能帮我理解一下这个问题吗?
using UnityEngine;
using System.Collections;
public class CharAnim : MonoBehaviour
{
private Animator animator;
float speed;
void Start()
{
animator = GetComponent<Animator>();
}
void Update()
{
animator.SetFloat( "speed", Input.GetAxis("Vertical") );
if ( Input.GetKeyDown( KeyCode.W ) && ( speed > 0.5f ) )
{
animator.SetTrigger("Walk");
}
else
{
animator.SetTrigger("Idle");
}
}
}X


发布于 2015-07-22 13:49:59
代码中的问题是,当您按下键时,animator.SetTrigger("Walk");在单个帧中被调用,而其余的框架则调用animator.SetTrigger("Idle");。
尝试将Input.GetKeyDown( KeyCode.W )更改为Input.GetKey( KeyCode.W )。前者只返回true一次,按下键时立即返回,而后者在释放键之前返回true。类似于:
void Update ()
{
if(Input.GetKey(KeyCode.W))
{
animator.SetTrigger("Walk");
}
else
animator.SetTrigger("Idle");
}另外,您不需要Animator中的Animator变量来触发游走动画,因为您已经在使用W了。

空闲->步行

走->懒散

发布于 2020-02-16 02:27:39
{
if(Input.GetKey(KeyCode.W))
{
animator.SetTrigger("Walk");
}
else
animator.SetTrigger("Idle");
}{
if(Input.GetKey(KeyCode.W))
{
animator.SetTrigger("Walk");
}
else
animator.SetTrigger("Idle");
}{
if(Input.GetKey(KeyCode.W))
{
animator.SetTrigger("Walk");
}
else
animator.SetTrigger("Idle");
}{
if(Input.GetKey(KeyCode.W))
{
animator.SetTrigger("Walk");
}
else
animator.SetTrigger("Idle");
}{
if(Input.GetKey(KeyCode.W))
{
animator.SetTrigger("Walk");
}
else
animator.SetTrigger("Idle");
}{
if(Input.GetKey(KeyCode.W))
{
animator.SetTrigger("Walk");
}
else
animator.SetTrigger("Idle");
}{
if(Input.GetKey(KeyCode.W))
{
animator.SetTrigger("Walk");
}
else
animator.SetTrigger("Idle");
}{
if(Input.GetKey(KeyCode.W))
{
animator.SetTrigger("Walk");
}
else
animator.SetTrigger("Idle");
}{
if(Input.GetKey(KeyCode.W))
{
animator.SetTrigger("Walk");
}
else
animator.SetTrigger("Idle");
}{
if(Input.GetKey(KeyCode.W))
{
animator.SetTrigger("Walk");
}
else
animator.SetTrigger("Idle");
}{
if(Input.GetKey(KeyCode.W))
{
animator.SetTrigger("Walk");
}
else
animator.SetTrigger("Idle");
}{
if(Input.GetKey(KeyCode.W))
{
animator.SetTrigger("Walk");
}
else
animator.SetTrigger("Idle");
}{
if(Input.GetKey(KeyCode.W))
{
animator.SetTrigger("Walk");
}
else
animator.SetTrigger("Idle");
}{
if(Input.GetKey(KeyCode.W))
{
animator.SetTrigger("Walk");
}
else
animator.SetTrigger("Idle");
}{
if(Input.GetKey(KeyCode.W))
{
animator.SetTrigger("Walk");
}
else
animator.SetTrigger("Idle");
}{
if(Input.GetKey(KeyCode.W))
{
animator.SetTrigger("Walk");
}
else
animator.SetTrigger("Idle");
}{
if(Input.GetKey(KeyCode.W))
{
animator.SetTrigger("Walk");
}
else
animator.SetTrigger("Idle");
}{
if(Input.GetKey(KeyCode.W))
{
animator.SetTrigger("Walk");
}
else
animator.SetTrigger("Idle");
}{
if(Input.GetKey(KeyCode.W))
{
animator.SetTrigger("Walk");
}
else
animator.SetTrigger("Idle");
}{
if(Input.GetKey(KeyCode.W))
{
animator.SetTrigger("Walk");
}
else
animator.SetTrigger("Idle");
}{
if(Input.GetKey(KeyCode.W))
{
animator.SetTrigger("Walk");
}
else
animator.SetTrigger("Idle");
}{
if(Input.GetKey(KeyCode.W))
{
animator.SetTrigger("Walk");
}
else
animator.SetTrigger("Idle");
}{
if(Input.GetKey(KeyCode.W))
{
animator.SetTrigger("Walk");
}
else
animator.SetTrigger("Idle");
}{
if(Input.GetKey(KeyCode.W))
{
animator.SetTrigger("Walk");
}
else
animator.SetTrigger("Idle");
}{
if(Input.GetKey(KeyCode.W))
{
animator.SetTrigger("Walk");
}
else
animator.SetTrigger("Idle");
}{
if(Input.GetKey(KeyCode.W))
{
animator.SetTrigger("Walk");
}
else
animator.SetTrigger("Idle");
}{
if(Input.GetKey(KeyCode.W))
{
animator.SetTrigger("Walk");
}
else
animator.SetTrigger("Idle");
}{
if(Input.GetKey(KeyCode.W))
{
animator.SetTrigger("Walk");
}
else
animator.SetTrigger("Idle");
}{
if(Input.GetKey(KeyCode.W))
{
animator.SetTrigger("Walk");
}
else
animator.SetTrigger("Idle");
}{
if(Input.GetKey(KeyCode.W))
{
animator.SetTrigger("Walk");
}
else
animator.SetTrigger("Idle");
}{
if(Input.GetKey(KeyCode.W))
{
animator.SetTrigger("Walk");https://stackoverflow.com/questions/31564090
复制相似问题