Unityを使った3Dゲームの作り方(かめくめ)ゲーム開発エンジンUnityを使った3Dゲームの制作に参考になる情報を公開しています。2019.02.08タイピングゲーム制作記の第2弾になります。前回から約1年経ってますが・・・・、制作を再開したのはつい最近であまり進んでいないですね。́Д`)前回までで問題文を出力し、それをタイピングするというところまで作りました。タイピングゲーム制作記1Unityで自作のタイピングゲームの進捗をお知らせするページです。́Д`)gametukurikata.com2018.03.23あらかじめ作成したローマ字を問題文として出力し、正解した時、失敗した時の処理を作りました。スポンサーリンク今回までに作成したもの今回は前回の記事の最後に書いた入力がどんな方法であっても正解するような処理を作成すると書いたので、その機能を作成してみました。前回はあらかじめ作成したローマ字の問題文を出力していましたが、そこを「平仮名」→「ローマ字」へと変換することで、あらかじめ固定の入力法のローマ字を出力せず、平仮名からローマ字の変換テーブルを作成し、その法則にしたがってローマ字を作成する機能を作成しました。変換テーブルは入力法を変えた時に更新し、最新の入力方法で平仮名からローマ字に変換します。タイピングが成功したかどうかはその平仮名によって入力方法が複数ある為、どの入力方法でも正解を判別出来るようにしました。それらの機能について少し言及しておきます。平仮名からローマ字を作成する手順はこうしました。平仮名からローマ字へと変換する法則を変換テーブルとして用意します。"whu"}},}平仮名をキーとし、対応する入力方法をListで作成し、Dictionary型のkeyTableに保持します(上記の変換テーブルは一部だけです)。上の例で「う」という入力方法は「u」、「wu」、「whu」という入力方法があり、最新の入力方法(タイピングした人の最後の入力法)は「u」なので、「う」をローマ字に変換する時は「u」を出力します。「kamekumechann」というローマ字を作成します。実際の問題文は平仮名の問題文「かめくめちゃん」とローマ字の問題文「kamekumechann」をstring型で持つのではなく、それぞれの平仮名とローマ字に対応するstring型のListを作成し個別に入れておきます。nowQuestionR;たとえば平仮名から変換したローマ字は「ka」「me」「ku」「me」「cha」「nn」と個別にListに保存します。これをしているかというと、例えば「ka」をタイピングする時に「ca」でも入力出来る為、平仮名に対応する入力方法毎に判別する必要があり便利になると思ったからです。平仮名「きゃ」等は平仮名二文字で一つのキーとする為、変換テーブルの二文字のキーから先に変換し、次に一文字のキー(「か」等)で変換という手順にしました。単純に変換テーブルを用いれば簡単!と思いきや、平仮名の「っ」や「ん」を変換する時は厄介なことが起きます。「っ」は「tt」等の続き文字で入力したり「ltu」や「xtu」でも入力出来、「ん」は問題文の途中で現れる時は「n」+「次の平仮名の入力方法」でも入力出来ますが、次の平仮名の入力方法で最初に「n」が来るときは「n」で短縮出来ないというのがあるからです。「くったく」→「kuttaku」等と同じ「っ」を変換するにも次の平仮名によって出力するべきローマ字が変わります。「しんにん」→「shinnninn」等(shinninnは出来ない)「shin」の時点でスペースキー等を押して一旦変換したり、ファンクションキー等を押せば変換出来ますが、そういったことまで判定するのはかなり面倒なので排除しました。(^_^;)叫び等の言葉や記号などについて叫び声、例えば「きゃぁぁぁ」といった小さい文字が出る場合も平仮名を変換する場合も多少うまく変換出来るようにしましたが、完全に出来たとは言えません。「はっっっ」みたいに日本語として成立していない場合もある程度変換出来るようにしましたが、こちらも完全とは言えません。記号については今のところ対応してません(これはまぁ後で出来ると思いますが)。平仮名からローマ字を作成する手順は基本的に最新の入力方法で変換するだけでしたが、入力方法がどれでも正解とする処理はなかなか難しくなりました。当初考えていたアルゴリズムが破綻してしまった為、行き当たりばったりな処理になった感が否めません。(^_^;)考え方としては今見ている平仮名のListのローマ字の入力方法と現在までに入力している文字列とが一致していれば正解、当てはまらなければ失敗という処理をします。「ca」「me]という入力が出来、現在「か」の平仮名のListを入力しているとしたら、「ka」でも「ca」でも正解とします。その為に今どのListの平仮名を見ているか?その何文字目を見ているか?といった情報を保持しておきます。inputOfList;例えば「ka」の「a」の入力をしている時は、indexOfListは0indexは1inputOfListは「k」もしくは「c」となります。「今まで入力した文字列」と「変換テーブルの入力方法を今まで入力した文字列の数分」比較し、一致したら正解とします。入力方法を変えた場合は今入力した方法を変換テーブルの先頭に移動させ、それを最新の入力方法とします。問題文の途中で入力方法を変えた場合、例えば「kamekame」を入力する場合に途中まで「kame」と「か」を「ka」と入力していて途中から現れる「か」を「ca」と入力した場合は問題のローマ字を変換する時に途中から「kamecame」と表示するようにします。問題文のローマ字をstring型のListで保持しているので、途中の「か」だけを「ca」とする時にも「平仮名」→「ローマ字」へと変換するメソッドでListの途中の「か」だけを「ca」と対応出来るようになっています。入力方法が変換テーブルにあれば正解とするだけならいいですが、平仮名からローマ字を作成した時と同様に「っ」と「ん」の処理が難しくなってきます。「っ」の場合は現在見ているListの次の平仮名の入力方法を見なくてはいけないのと「ん」の場合は「n」で短縮し次の平仮名の入力方法の最初のアルファベットをタイピングしても正解と出来るからです。これらの処理によって処理がだいぶ複雑になっていきました。(^_^;)全部の入力方法のローマ字を作成し判別する方法もあり?問題文自体が短ければ全部の入力方法を使った文字列を全部作成し、その文字列と比較する方法も出来るのかな?と思いました。「camecume」という4つの文字列を変換テーブルから作り、「現在までに入力した文字列」と「問題文の現在までに入力した文字数分」を比較し一致していれば正解、一致しなければ不正解とします。́Д`)「どうしてこうもねむいのかそれがもんだいだ」という問題分であれば768?この問題文を作成する事になります。入力法が多い平仮名が多くなる、または問題文自体が長くなればそれだけ作成する文字列も膨れ上がりますね。..)φメモメモそもそも入力方法を変えたら正解としない入力方法を変えて正解にするよりも、入力方法をあらかじめ設定してもらってその入力方法以外は不正解とする処理にすれば、「平仮名」→「ローマ字」という変換処理だけで済むので楽だったかもしれません。するとゲームというよりソフトという意味合いが強くなりそうですけどね。上のような感じになります。色々な問題文を作成して、おかしい所がないか調べる必要はありますがとりあえずは出来たという感じです。するもの後は伸ばし棒(ー)や数字、記号の問題の処理を入れていないのでそれを入れていけたらと思います。あ・・・伸ばし棒は既に作ってある模様(謎)あとは複数の問題文の排他制御を入れる事ですかね。..)φメモメモタイピングオブザデッドのような複数の問題文が出た時にどの問題からでも入力が出来て、一旦入力したらその問題文以外は入力出来ないような排他的な処理を作成していきたいと思います。入力を始めてもキャンセルキー(まだどのキーにするか決めていない)を押したらその問題の入力をやめて他の問題文を選べるような処理も入れていく必要もありそうですね。4回目以降は今回の記事では同じ問題文が何度も出てきているので、毎回違う問題を表示する機能、それが出来たらタイピングの処理部分が完成し、後は敵の登場等の処理ですね。タイピングオブザデッドの場合は問題文は常に前面のUIとして表示されてますが、それらを制御するのは難しそうなので、敵の大きさに応じてUIの大きさも変わる(敵がUIを保持)仕様にしよう(*‘∀‘)と思います。おわりに今回の機能はある程度出来ましたが、処理の中身はあまり褒められたものではなく分かり辛いです。C#プログラミングのイディオム/定石&パターン」の中で「どうやるか?」ではなく「なにをやるか?」という視点でコードを書くというのがありますが、正にそれ!今回の機能は「どうやるか?」といった処理のゴリ押しをして作ってしまいました。(^_^;)いずれリファクタリングをしてわかりやすく「なにをやるか?」の視点のコードに直したいと思います。コピーかめくめちゃんをフォローする7Unityを使った3Dゲームの作り方(かめくめ)Unityを使った3Dゲームの作り方(かめくめ)関連記事タイピングゲームタイピングゲーム制作記8自作のタイピングゲームを作る過程を綴った記事の8回目です。タイピングゲームタイピングゲーム制作記5Unityで自作のタイピングゲームを制作する過程を書いています。今回はゲームのフィールドの作成、敵の攻撃を受けた時の処理、敵の動き、問題文を常にカメラの向きにするのと問題文の位置をオフセット値を使って敵毎に変更出来るようにしました。タイピングゲームタイピングゲーム制作記1Unityで自作のタイピングゲームの進捗をお知らせするページです。́Д`)タイピングゲームタイピングゲーム制作記7自作のタイピングゲームを作る過程を綴った記事です。今回は入力をInputManagerからInputSystemに変更、スクリーンスペース内に敵がいない時は打てないように、敵が近づいたらテキストをワールドスペースからスクリーンスペースへと変換、敵が打たれた時にアニメーションをさせるようにしました。タイピングゲームタイピングゲーム制作記9自作のタイピングゲームを作る過程を綴った記事の9回目です。タイピングゲームタイピングゲーム制作記6自作のタイピングゲームを作る過程を綴った記事です。今回は、同じ問題は出さない、入力すべき文字が同じ問題を出さない、敵が障害物に隠れたら打てなくする。等の機能を取り付けました。C#で正規表現を使って文字列処理をするタイピングゲーム制作記3ホームゲーム制作記タイピングゲームスポンサーリンクサイト内検索が出来ますプロフィール管理人のかめくめちゃんです。(-_-)メールはこちらにお願いします(記事に関する質問は送らないでください、返信は期待しないでください(._.))。kamekumechan@gmail.comいずれはSIRENやバイオハザードみたいなアクションゲームを作りたいと思っています。ゲームシナリオが書けないので面白いゲームはなかなか作れません・・・・。(^_^;)名前の由来はカメが好きだからです。プロフィールになってないな・・・・(-.-)Unityをこれから始める人へこれからUnityを使ってみようという方はUnityを使った3Dゲームの作り方(かめくめ)の歩き方Unityを使った3Dゲームの作り方(かめくめ)で、はじめてUnityの学習をする時の当ブログの記事を読む順番を書きました。機能を積み上げていく形になるので便利かも?gametukurikata.com2019.06.21の記事に記載の順番で見て頂くとUnityの基本的な使い方がわかり、簡単なアクションゲームや、TPSゲームの作成までが出来ます。自作タイピングゲームタイピングゲームを作りました。WebGL形式なのでPCのブラウザで遊べます。以下からプレイ出来ます。FinalTypingUnityを使って作成したローマ字入力のタイピングゲームです。gametukurikata.com2022.01.02お知らせ2023/01/24個人的にUnity2022.2.3f1をインストールしました。2022/10/14UnityのIKを使って足の位置と角度を地面に合わせる機能Unityのゲームでキャラクターの両足が別の高さの地面の上にある時にそれぞれの足をそれぞれの地面につけるようにする機能を作成しますgametukurikata.com2016.04.11機能を少し修正しました。2020/09/19コメント欄は閉鎖しました。今までコメントを投稿してくださった方はありがとうございました。(^^)/2018/08/07わたくしに出来る事は既に記事にしてあるので、ブログ右上の検索窓を活用してください。(._.)またブログの最初の方の機能を積み上げていく記事に関しての疑問点は当ブログ記事のスクリプトの説明と寄せられた質問への回答Unityを使った3Dゲームの作り方(かめくめ)の機能積み上げ形式の記事のスクリプトの説明と寄せられた記事の機能についての質問への回答を掲載しています。gametukurikata.com2019.08.01Unityを使い始めたばかりの人がつまづきやすい点を解消するUnityを使い始めたばかりの人が結構な確率で陥る不具合や疑問点を解消していきます。基本的にはブログに寄せられた質問への回答という感じです。gametukurikata.com2018.12.04も参照してみてください。小・中学生によるデジタルコンテンツ開発の全国大会ですuycc.unity3d.jp2022年大会の先行エントリーが開始されているようです。当ブログはハイスピードプランです。WordPressの編集画面の動作が早くなった。当ブログはハイスピードプランです。WordPressの編集画面の動作が早くなった。記事の内容に質問がある方へUnityを使った3Dゲームの作り方(かめくめ)の歩き方UnityのJavaScriptとC#を読み替えてどちらでも対応出来るようにするホーム検索トップサイドバータイトルとURLをコピーしました。