Sup?私はデフォルトの私の選手キャラクターのための1つのアイドル状態を持っています。しかし、私はセカンダリアイドルをしたい。私はCキーを押すと、その2番目のアイドルアニメーションに移動し、そこにとどまります。 xキーを押すと、デフォルトのアイドルアニメーションに戻ります。しかし、これが問題の始まりです。セカンダリアニメーションに再び切り替えるためにCキーを押すと、すぐに2番目のアイドルアニメーションにジャンプしますが、それ以上のコマンドを待つか待たずにデフォルトのアニメーションに戻ります。私はそれが私がそれを言うところにとどまることを望む。2つのアイドル状態のアニメーション状態の切り替え
さらに、問題が発生してCキーをもう一度押すと、アニメーションが変更されません。しかし、この時点でXキーを押した後、このあとCキーを押すと、再びアニメーションの間を前後に動きます。だから私はそれが本当にしていないときに切り替わっていると思うと思う。この問題を解決するために何をすべきか教えていただけたら、私はあなたの親友になるでしょう。ありがとう。
using UnityEngine;
using System.Collections;
public class Player : MonoBehaviour
{
private Animator anim;
Rigidbody2D rb;
public float Speed;
private bool aim = false;
private bool shot = false;
private bool idle = true;
public Transform arrowSpawn;
public GameObject arrowPrefab;
private bool idle2 = false;
void Start()
{
rb = GetComponent<Rigidbody2D>();
anim = GetComponent<Animator>();
}
// Update is called once per frame
void Update()
{
Movement();
Inputer();
Morph();
}
void Movement()
{
float moveH = Input.GetAxis("Horizontal");
{
rb.velocity = new Vector2 (moveH * Speed, rb.velocity.y);
}
anim.SetFloat ("Speed", Mathf.Abs (moveH));
}
void Inputer()
{
if (!aim && Input.GetKeyDown (KeyCode.S)) {
aim = true;
anim.SetTrigger ("AIm");
}
if (aim && Input.GetKeyUp (KeyCode.S)) {
shot = true;
anim.SetTrigger ("Shot");
}
if (shot) {
shot = false;
aim = false;
idle = true;
anim.SetTrigger ("Idle");
Instantiate (arrowPrefab, arrowSpawn.position, arrowSpawn.rotation);
}
}
void Morph()
{
idle = !idle2;
if (idle && Input.GetKeyDown (KeyCode.C)) {
idle2 = true;
anim.SetTrigger ("idle2");
}
if (!idle && Input.GetKeyDown (KeyCode.X)) {
idle = true;
anim.SetTrigger ("Idle");
idle2 = false;
}
}
}
私はちょうどそれらを試してみました。結果はまったく同じです。私は、どこかの問題がアイドル状態であることを知っています。あなたは自分のコードをちょっと整理しました。私はリターンを入れることについて考えなかったので、それに感謝します。しかし、問題は両方のバージョンに残っています。 –
OH!ちょうどそれを最高の仲間を見つけた!私は、アイドル1というアニメーターで二次的なトリガーを作りました。それから私はアイドル1を使用して最初のアイドルから2番目のアイドルからリンクし、anim.SetTrigger( "Idle1")コマンドでanim.SetTriggerコマンドに置き換えました。助けてくれてありがとう! –