質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

0回答

477閲覧

MoveTowardsで追尾させているキャラクターのアニメーションが一定間隔で一瞬切り替わる

amijaga

総合スコア1

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2021/12/02 02:28

x座標が一定時間ごとに変化するオブジェクトをキャラクターにmovetowardsで移動させています
キャラクターは待機中、左移動、(左移動のアニメーションをflipで反転させた)右移動の三種類のアニメーションを持っており、
キャラクターのx座標とランダムに決定されるオブジェクトのx座標をupdate関数にて比較、
ランダムのx座標<キャラクターのx座標ならばキャラクターは左に動くことになるので左移動のアニメーションを、逆ならば右、という具合でアニメーションを実行しています
この時負の方向、左への移動の場合はアニメーションは問題なく行われるのですが、正の方向、右への移動の場合は、右移動のアニメーションがされながらも一定間隔で一瞬だけ待機アニメーションが実行されるという問題にぶつかっています

・この不具合の発生中、アニメーターウィンドウでは右移動と待機のステートが猛スピードで切り替わっています
・アニメーションウィンドウからの再生では問題なく右移動のアニメーションのみが実行されているのでキーの配置には問題がないように思えます
・右移動のアニメーションは左移動のものを反転させているのですが、この一瞬だけ実行される待機アニメーションも反転しています
・一瞬だけ実行される待機アニメーション中もキャラクターの座標移動は恐らく止まっていないです

エラーメッセージもなくどうしたらいいかわからない状態です、どうかお助けください

座標の変化するオブジェクトのスクリプト

C#

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class tage : MonoBehaviour 6 7{ 8 public static float vectx; 9private float time; 10 11 // Start is called before the first frame update 12 void Start() 13 { 14 vectx=0; 15 transform.position = new Vector3(0f,2.6f,-2f); 16 17 StartCoroutine(esa()); 18 } 19 20 // Update is called once per frame 21 void Update() 22 { 23 24 } 25 private IEnumerator esa() 26 { 27 while(true) 28 { 29 yield return new WaitForSeconds(8f); 30 vectx=Random.Range(-1.5f,1.5f); 31 this.transform.position=new Vector3(vectx,2.6f,-2); 32 } 33 } 34} 35

追いかけるキャラクターのスクリプト

C#

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class ugoki2a : MonoBehaviour 6{ 7 8 public int speed=1; 9 public GameObject kotti; 10 Vector3 position; 11 float x; 12 13 public Animator animator; 14 15 16 // Start is called before the first frame update 17 void Start() 18 { 19 float x =transform.position.x; 20 transform.position = new Vector3(0f,2.6f,-2f); 21 22 23 24 kotti =GameObject.Find("esa(Clone)"); 25 StartCoroutine(ugoku()); 26 Animator animator = GetComponent<Animator>(); 27 28 29 30 31 32 } 33 34 // Update is called once per frame 35 void Update() 36 { 37 if(tage.vectx<x) 38 { 39 animator.SetBool ( "walker", true );//左に移動するアニメーション 40 41 Debug.Log("ano"); 42 x =transform.position.x; 43 } 44 if(tage.vectx>x) 45 { 46 animator.SetBool ( "walkerRIGHT", true );//右に移動するアニメーション 47 Debug.Log("saa"); 48 x=transform.position.x; 49 } 50 if(tage.vectx==x) 51 { 52 animator.SetBool ( "walker", false ); 53 animator.SetBool ( "walkerRIGHT", false ); 54 55 Debug.Log("Choi"); 56 x =tage.vectx; 57 } 58 59 } 60 61 private IEnumerator ugoku() 62 { 63 while(true) 64 { 65 //Debug.Log("oioi"); 66yield return new WaitForSeconds(0f); 67 68this.transform.position=Vector3.MoveTowards(this.transform.position,kotti.transform.position,speed*Time.deltaTime); 69 70//float x =position.x; 71 } 72 } 73 74} 75

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問