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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Unity

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

Q&A

1回答

346閲覧

思ったようなボタンが実装できません。

kitazawa-marunn

総合スコア10

Unity

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

3グッド

0クリップ

投稿2018/12/13 13:19

現在、小中学生のプログラミング教育をするためのアプリケーションを作成しています。
アプリケーションの内容としましては、道案内ゲームです。

直進、左折、右折、戻るの四つのボタンを組み合わせ、スタートからゴールまでキャラクターを導く。というアプリケーションです。押したボタンの履歴が残るところまでは実装できたのですが、
押したボタンの履歴を残し、ゴールまで導けるような組み合わせができたら「開始ボタン」を押し、キャラクターが動き始めるようにする方法がわかりません。説明が下手で済みません。わかる方がいらっしゃいましたら教えていただけないでしょうか。

haruka-uni, isoyanyan, bochan2👍を押しています

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

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

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

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

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

kitazawa-marunn

2018/12/13 13:50

分からなくて困っています。 やり方分かりますか…?
fiveHundred

2018/12/13 14:01

「分からなくて困っています。」ではありません。 もし、あなたが複数ユーザー登録して同じ質問を繰り返している(違うならすいません)のであれば、規約違反になる可能性がありますし、そうでなくともマナー違反なので誰も回答したいと思わないでしょう。 そうでなくとも、類似の質問で回答が無いのに、こちらでは回答が来る、ということは考えられないので、先の質問に回答が来るまで待ってから質問するか、より詳細な説明を付け加えて差別化するといったことを行うべきだと思いますが、どうでしょう。
kitazawa-marunn

2018/12/13 14:03

承知しました。 ですが、私が別のアカウントを作っているわけではありません。 この3つは全くの別人が行った質問です。
Hawn

2018/12/14 01:30 編集

質問の内容・投稿時間がほぼ同じで登録日時まで大体同じなんて偶然、学校でteratail使って回答を貰ってくる課題でも出たのだろうかと思ってしまいますが...。質問に関しては履歴を取れていて正解ルートが一つならば、順番に条件式で判別して全て正ならば移動する様にしてしまえば良いです。とはいえ、文章で書いて伝わる習熟度合いでも無さそうなのでせめてその出来ている段階までのソースコードを提示して聞いてみてはどうでしょうか?
guest

回答1

0

履歴の配列を
List<int> btnHistory;
0:右 1:左 2:上 3:下としておきました
都合に合わせてgetDirを改変したり
int[] btnHistoryに書き換えるなりしてください
似たような質問があったので僕の回答をそのまま載せておきます
このスクリプトを動かしたい物体に付けて
ボタンのスクリプトのインスペクターで指定してから
btnHistoryを設定したあと.Activate()すれば動き出します

C#

1public class MovingObj:MonoBehavior{ 2int count; 3Vector3 target; 4Vector3 tempPos; 5float timestep=1; 6float t=0; 7Vector3 getDir(int i){ 8switch(i){ 9case 0: 10return new Vector3(1,0,0);break; 11case 1: 12return new Vector3(-1,0,0);break; 13case 2: 14return new Vector3(0,1,0);break; 15 case 3: 16return new Vector3(0,-1,0);break; 17} 18return Vector3.zero; 19} 20bool activated; 21public List<int> btnHistory; 22public void Activate(){ 23activated=true; 24tempPos=transform.position; 25targetPos=getDir(btnHistory[0])+tranfrom.position; 26} 27void Update(){ 28 if(!activated)return; 29 transform.position=Vector3.Lerp (tempPos,targetPos,t) 30 t+=Time.deltaTime/timestep; 31 if(t>1){ 32 count++; 33 if(count>=btnHistory.Count){ 34activated=false; 35return; 36 37} 38 targetPos=tempPos+getDir(btnHistory[count]); 39 40 t=0; 41 } 42} 43}

投稿2018/12/22 03:53

編集2018/12/22 03:55
bochan2

総合スコア2050

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問