###前提・実現したいこと
タイトル画面にて、以下のような感じの選択肢があるのですが
▶ ゲームスタート
_ランキング
_コンフィグ
コントローラーの左スティックを倒した時にカーソルを一段だけ下げたい。
また、カーソルが一番上に有る時にスティックを上に倒すと一番下(この場合コンフィグ)、カーソルが一番下に有る時にスティックを上に倒すと一番上(この場合ゲームスタート)にカーソルが行くようにしたいです。
(現在使用中のコントローラーはXbox360のものを使用中)
動的に動かしているのを見せたいので【iTween】を使用しています。
###発生している問題・エラーメッセージ
カーソルが、下に行き過ぎたり、上に行き過ぎたり、画面外に出たり、Updateで入力を受け付けているので、かなりのスピードでカーソルが動く。
###該当のソースコード
C#で作成中
1 2public class GameDirectorTitle : MonoBehaviour { 3 4 [Header("ゲームモードを選ぶ")] 5 public GameObject SelectIcon; 6 public int SelectIconPosition; 7 8 // Use this for initialization 9 void Start () { 10 SelectIconPosition = 0; 11 } 12 13 // Update is called once per frame 14 void Update() { 15 StartCoroutine(SelectIconMove()); 16 } 17 18 IEnumerator SelectIconMove() 19 { 20 //カーソルがゲームスタートの時 21 if (SelectIconPosition == 0) 22 { 23 //十字キーを上 24 if (Input.GetAxisRaw("Vertical") == 1) 25 { 26 //カーソル移動 27 iTween.MoveBy(SelectIcon.gameObject, iTween.Hash("y", -160f, "time", 0.25f)); 28 //【Config】 29 SelectIconPosition = 2; 30 Debug.Log("0,+1"); 31 yield return new WaitForSeconds(0.25f); 32 } 33 //十字キーを下 34 else if (Input.GetAxisRaw("Vertical") == -1) 35 { 36 iTween.MoveBy(SelectIcon.gameObject, iTween.Hash("y", -80f, "time", 0f)); 37 //【ランキング】 38 SelectIconPosition = 1; 39 Debug.Log("0,-1"); 40 yield return new WaitForSeconds(0.25f); 41 } 42 //決定ボタンを押す 43 else if (Input.GetButtonDown("AtackX")) 44 { 45 SceneManager.LoadScene("new-stage1"); 46 } 47 } 48 //カーソルがランキングの時 49 else if (SelectIconPosition == 1) 50 { 51 //十字キーを上 52 if (Input.GetAxisRaw("Vertical") == 1) 53 { 54 //カーソル移動 55 iTween.MoveBy(SelectIcon.gameObject, iTween.Hash("y", 80f, "time", 0.01f)); 56 //【ゲームスタート】 57 SelectIconPosition = 0; 58 Debug.Log("1,+1"); 59 yield return new WaitForSeconds(0.25f); 60 } 61 //十字キーを下 62 else if (Input.GetAxisRaw("Vertical") == -1) 63 { 64 iTween.MoveBy(SelectIcon.gameObject, iTween.Hash("y", -80f, "time", 0f)); 65 //【Config】 66 SelectIconPosition = 2; 67 Debug.Log("1,-1"); 68 yield return new WaitForSeconds(0.25f); 69 } 70 //決定ボタンを押す 71 else if (Input.GetButtonDown("AtackX")) 72 { 73 74 } 75 } 76 //カーソルがConfigの時 77 else if (SelectIconPosition == 2) 78 { 79 //十字キーを上 80 if (Input.GetAxisRaw("Vertical") == 1) 81 { 82 //カーソル移動 83 iTween.MoveBy(SelectIcon.gameObject, iTween.Hash("y", 80f, "time", 0.01f)); 84 //【ランキング】 85 SelectIconPosition = 1; 86 Debug.Log("2,+1"); 87 yield return new WaitForSeconds(0.25f); 88 } 89 //十字キーを下 90 else if (Input.GetAxisRaw("Vertical") == -1) 91 { 92 iTween.MoveBy(SelectIcon.gameObject, iTween.Hash("y", 160f, "time", 0f)); 93 //【ゲームスタート】 94 SelectIconPosition = 0; 95 Debug.Log("2,-1"); 96 yield return new WaitForSeconds(0.25f); 97 } 98 //決定ボタンを押す 99 else if (Input.GetButtonDown("AtackX")) 100 { 101 102 } 103 104 } 105 } 106 107} 108
###試したこと
コンフィグ画面、ランキング画面はまだ作っておりません。
【SelectIconPosition】は選んでいるカーソルの位置で、
ゲームスタート【0】
ランキング__【1】
コンフィグ__【2】
で0の時に上を押せば、カーソルが一番下に行くという考えで作ったのですが、カーソルが画面外に出ていってしまいました。
また、一回の動作ごとにコルーチンで休みを挟めばいいかと思って移動ごとに【0.25f】一時停止するようにしてみましたが、コレもダメ。
【void PositionUp】というクラスを別に作って、みましたが、根本がUpdateから取っているのでその関数が連続で実行されてしまって、これもダメ。ダレカタスケテッ!
###補足情報(言語/FW/ツール等のバージョンなど)
【環境】
Unity5.6.1f1 personal
win10
MicrosoftVisualStudio
上記が作成環境になっております。
【おまけのおたすけ】
いつも私の質問に答えていただいている皆様、本当にありがとうございます。
根本的に、本を2冊ほどしか読んでいないので、知ってる知識が少なすぎる問題なんだとは思います。
ただ、友達がオススメしてくれる本が、字ばっかりでまったく理解が出来ません。自分は、図解がないとイメージがわかず、理解が出来ない、のだと分析します。
てめぇのクソ質問に答えるのがうんざりだと言う方、もし宜しければ、わかりやすいオススメの本とかあれば教えてください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/10/22 03:06
2017/10/22 03:45 編集