会話イベントとそれ以外の分岐
会話イベント付のサイドビューを作っています。
会話イベントにtalk
その時以外にはnormal
とstateを分け、
normalでは左右に動いたり
ジャンプしたりなど自由に動き
talkでは操作できなくして静止したいのですが、
state事の分岐方法がわからなくて……
他サイトを参考にしても
stateを作った先からが出来なくて……
(例え分岐したとしても、ジャンプや移動モーションのままのポーズで移動したり……)
ゲームエンジン
ユニティ 2021・1・13
fungus
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
下記のような質問は推奨されていません。
- 質問になっていない投稿
- スパムや攻撃的な表現を用いた投稿
適切な質問に修正を依頼しましょう。
回答1件
0
C#
1[RequireComponent(typeof(Rigidbody2D))] 2public class Test : MonoBehaviour 3{ 4 [SerializeField] private FixedJoystick fixedJoystick; 5 private int number = 0; // 最初は移動が出来る 6 Rigidbody2D rb; // Rigidbody2D 型の変数 7 float speed; 8 [SerializeField] float currentSpeed; 9 float axisH; 10 bool isMoving = false; 11 12 public enum State 13 { 14 Normal, 15 Talk, 16 } 17 State state = State.Normal; 18 19 private void Start() 20 { 21 rb = GetComponent<Rigidbody2D>(); 22 } 23 private void Update() 24 { 25 if (number == 0) 26 { 27 state = State.Normal; 28 } 29 if (number == 1) 30 { 31 state = State.Talk; 32 } 33 } 34 35 private IEnumerator TalkEvent() 36 { 37 // トークイベント 38 isMoving = true; 39 40 /* 41 会話中は入力を受け付けない 42 */ 43 yield return new WaitForSeconds(50f); 44 45 isMoving = false; 46 } 47 48 private void MoveEvent() 49 { 50 if (!isMoving) 51 { 52 // 移動 53 axisH = fixedJoystick.Horizontal; // 水平方向の入力をチェックする 54 speed = currentSpeed; 55 rb.velocity = new Vector2(axisH, rb.velocity.y) * speed * Time.deltaTime; // 速度を更新する 56 } 57 } 58 59 private void FixedUpdate() 60 { 61 switch (state) 62 { 63 case State.Talk: 64 StartCoroutine("TalkEvent"); 65 break; 66 case State.Normal: 67 MoveEvent(); 68 break; 69 default: 70 break; 71 } 72 } 73 74 private void OnTriggerEnter2D(Collider2D other) 75 { 76 // もし何らかのTriggerに当たったらトークイベント 77 if (other.gameObject.CompareTag("Enemy")) 78 { 79 number = 1; 80 isMoving = true; 81 state = State.Talk; 82 Debug.Log("敵キャラクターとの会話"); 83 } 84 } 85 86 private void OnTriggerExit2D(Collider2D other) 87 { 88 if (other.gameObject.CompareTag("Enemy")) 89 { 90 number = 0; 91 isMoving = false; 92 Debug.Log("会話を終わる"); 93 } 94 } 95}
修正しました。JoyStickPackというのをダウンロードして、バーチャルパッドでプレイヤーの左右移動が出来ます。移動を受け付けたくない時は、isMoving=true;なので、isMoving=false;で移動出来るように、会話イベント終了時にfalseにしてあげて下さい。
Youtubeから
こちらの動画を参考にやってみました。
投稿2023/03/08 15:41
編集2023/03/14 11:40総合スコア171
下記のような回答は推奨されていません。
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
このような回答には修正を依頼しましょう。
回答へのコメント
2023/03/11 11:55
2023/03/12 07:41
2023/03/12 07:54
2023/03/12 10:58
2023/03/12 22:57
2023/03/13 08:20
2023/03/14 10:47
2023/03/14 11:42
2023/03/14 13:39
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
関連した質問
Q&A
解決済
GASで特定の列に更新があると自動で通知メールが飛ぶようにしたいが、rangeが定義されていないとエラーが出る
回答1
クリップ1
更新
2023/05/29
Q&A
解決済
シングルトンなGameManager実装時のボタンクリックによるシーン遷移
回答1
クリップ0
更新
2023/05/27
Q&A
解決済
【Flutter】GoogleMapのダークモード、ライトモードをリアルタイムに反映させたいのですができません。
回答1
クリップ0
更新
2023/05/24
Q&A
解決済
CSSファイルが読み込めない
回答1
クリップ0
更新
2023/05/22
Q&A
解決済
CSS position: absolute が効きません
回答1
クリップ0
更新
2023/05/23
Q&A
受付中
css/jsでドラッグアンドドロップ中のゴーストを非表示にしたい。
回答2
クリップ1
更新
2023/05/30
Q&A
解決済
【WPF】カレンダーをカスタマイズし、日付欄にコメント欄を追加したい
回答1
クリップ1
更新
2023/05/30
Q&A
解決済
borderを一部適用したい
回答1
クリップ0
更新
2023/05/26