No.002 進捗状況06
コムローイ祭り -タイ-
みなさんこんにちは🌚
いまさらアサシンクリードシンジケートにはまっているブルーノです。洋ゲーは写実的というのかとてもリアルに近い美麗なグラフィックがプレステにマッチしていますね。もちろんXboxやPCという手もあるのですがクオリティに対しての値段や日本人にとっての販売タイトルの身近さが良いですよね。
さて今回は前回のプレイヤー周りに取り組むのですが、実は以前友人に制作途中のこのプロジェクトを見てもらったところそんなところはあとでいいからゲームとしての核を先に作れと言われてしまいました笑 というわけで現在改善途中のプレイヤーの挙動をひとまず直したらもうインゲームに取り組んで行こうと思います。というわけで今回は「プレイヤーの動き方」+「インゲーム少し」という内容の投稿になると思います。
プレイヤーの挙動
実は作っている間ずっと気になっていたことがあって、Unity標準搭載のEthanくんのアニメーションでは走行時の方向転換の際に後ろ向きに急な角度だといちいちたちどまってから振り向く動作を行うためテンポが悪いなーと思っていました。なのでブレンドツリーをいじってEthanくんからこの振り向く動作を取り除きたいと思います。
EthanのAnimatorにあてられているThirdPersonAnimatorコントローラーを確認します。
AnimatorのGroundedからBlend TreeがあてられているMotionタブからブレンドツリーを確認します。
このブレンドツリーについては実は昔の記事で使い方をざっとやったことがあります。
dreameaters5239.hatenablog.com
この時のいじり方を参考にたちどまったままの方向転換のモーションを消してみます
おさらいとして、すでにあるモーションを削除するにはそのモーションを該当するひし形かリストから選択し、-ボタンで削除します。だいぶスッキリしましたね。走りながらの急な方向転換もいらないかなと思ったので外側のモーションを全て削除してしまいました。また、まっすぐ走ることが難しかったのでモーション間の間隔を広げることでパッド操作時の敏感な方向転換を鈍くしてみました。
いい感じになりました!成功です!
では本格的にインゲーム作成をしていきたいと思います。
今回は加速装置的な内容をやっていきたいと思います。
加速装置の演出的な部分以外を大別すると
・他の動くものの動きを遅くする
・自分の動きを速くする
ことでそれっぽくしようかなと思います。
一つ目の物体を遅くすることについてはイーサンにPlayerController的なスクリプトをつけ、その中のstaticなbool値とfloat値を設けようと思います。ほかのオブジェクトはそれを参照することでモーションのスピードと加速しているかどうかの2点を変更できます。float値だけで最初はいいんじゃないかとも思いましたが自身は動かないで動作するオブジェクトなどのためにbool値もつけておきました(使うかはわかりませんが)。
それに伴い、以前作ったAudienceControllerも変更しました。
dreameaters5239.hatenablog.com
using System.Collections; using System.Collections.Generic; using UnityEngine; public class AudienceController : MonoBehaviour { private Animation anim; private bool quicker; private int motionTimer; //モーションの時間のタイマーと同時に何のモーションをするかを決める。 private float motionTime; //モーションまでの時間。マックスになったらモーションをし、リセットされる。 private bool motionBool; //モーションタイマーを進めるかどうか // Use this for initialization void Start () { quicker = false; anim = GetComponent<Animation> (); motionTimer = Random.Range(5, 10); motionTime = 0f; motionBool = true; } // Update is called once per frame void Update() { if(motionBool) motionTime += Time.deltaTime; //motionBoolがtrueの時だけタイマーが進む。 if(motionTime > motionTimer) { motionBool = false; StartCoroutine(AudienceAnim(motionTimer)); motionTime = 0f; motionTimer = Random.Range(5, 10); } if (!anim.isPlaying) anim.Play(); //anim[anim.clip.name].speed = PlayerController.WorldTime; //これじゃダメらしい if (PlayerController.QuickTimeSwitch == true && quicker == false) { foreach (AnimationState a in anim) { a.speed = PlayerController.WorldTime; } quicker = true; } if (PlayerController.QuickTimeSwitch == false) { foreach (AnimationState a in anim) { a.speed = PlayerController.WorldTime; } quicker = false; } } IEnumerator AudienceAnim(int i) { switch(i) { case 5: anim.CrossFade("applause"); anim.CrossFadeQueued("idle"); yield return new WaitForSeconds(2.07f); break; case 6: anim.CrossFade("applause2"); anim.CrossFadeQueued("idle"); yield return new WaitForSeconds(2.07f); break; case 7: anim.CrossFade("celebration"); anim.CrossFadeQueued("idle"); yield return new WaitForSeconds(2.07f); break; case 8: anim.CrossFade("celebration2"); anim.CrossFadeQueued("idle"); yield return new WaitForSeconds(2.07f); break; case 9: anim.CrossFade("celebration3"); anim.CrossFadeQueued("idle"); yield return new WaitForSeconds(2.07f); break; } motionBool = true; yield return null; } }
なんかソースコード貼り付けられるってことを聞いたんで試してみましたが行番号わからなくて微妙ですね。javaScriptをつかって行数を表示させる方法もあるらしいですがいくらやってもできませんでした。。。また今度😓
Update真ん中のコメントアウトした行(//anim[anim...)のように記述してもうまく機能しなかったので下のように長く書くしかありませんでした。foreach文を毎フレームやるのは負荷が大きいという情報を聞いたのでちょっと長いですが下にその対策をした文を作りました。
では次にプレイヤーの速度をあげようと思います。
ThirdPersonControllerはThirdPersonCharacterというスクリプトコンポーネントがついており、このMoveSpeedMultiplierとAnimSpeedMultiplierがそれぞれモーションと移動速度を変更できるようですね。しかしこのコンポーネント、スクリプトの場所が名前空間から違い、参照する場合は少々長くなります。そしてスクリプトをみてみると先ほどの関数たちはSerializeFieldで可視化されたprivate値のようで、外部から変更できないようになっているのでpublicに書き換えます。
そしてこれを操作する記述をPlayerControllerに追加しました。
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityStandardAssets.CrossPlatformInput; public class PlayerController : MonoBehaviour { public static bool QuickTimeSwitch; //現在加速しているかどうか public static float WorldTime; //主人公以外の時間。各アニメーションにはこの変数をかけておくことで加速時にスローにする float QuickTimeCount; //現在の加速時間 public int QuickTimeLimit; //何秒間加速するか設定する public UnityStandardAssets.Characters.ThirdPerson.ThirdPersonCharacter TPC; // Use this for initialization void awake () { QuickTimeSwitch = false; } // Update is called once per frame void Update() { //QuickTimeSwitch = CrossPlatformInputManager.GetButtonUp("Button"); //「Button」に設定しているボタンを使う if (Input.GetKeyDown(KeyCode.T) && QuickTimeSwitch == false) TimeQuicker(); if (QuickTimeSwitch == true) { QuickTimeCount += Time.deltaTime; if (QuickTimeCount > QuickTimeLimit) { QuickTimeSwitch = false; TPC.m_AnimSpeedMultiplier /= 2; TPC.m_GravityMultiplier /= 2; TPC.m_MoveSpeedMultiplier /= 2; WorldTime = 1f; QuickTimeCount = 0; } } } void TimeQuicker() { QuickTimeSwitch = true; TPC.m_AnimSpeedMultiplier *= 2f; TPC.m_GravityMultiplier *= 2f; TPC.m_MoveSpeedMultiplier *= 2f; WorldTime = 0.1f; } }
重力のGravity Multiplierもついでに操作しておきました。
再生してみると。。。
画像ではわかりにくいですがプレイヤーとオーディエンスの速度変更に成功しました!!今回はここまでにしておきます。
Unityでの開発もまだまだままならないですがコンシューマーゲームを作る場合はCやC++が主流と聞きました。そちらの勉強もこれからしていきたいです。
No.002 進捗状況05
ヒリアー湖 - オーストラリア -
みなさんこんにちは🌚
マリオパーティ8に毎回全力で挑むも最後のスターボーナスがでかすぎて辛いブルーノです。こんなん運ゲーやんと思いつつもついやってしまうんですよねー。
さて今回は、プレイヤー制御をしていきます。大きく考えてプレイヤー制御は
・UIの配置
・機能実装
の二つと考えています。UIの配置はまず基本の移動を実装することから始め、うまくいったら別の要素も実装していこうと思っています。スマホゲーはコンシューマーやアーケードと異なりボタンが著しく少ないのでどうしても画面に対応させる機能を追加しなければならないです。このワンクッションだけでも僕には大仕事なので今回分けることにしました😰
しかし調べてみるとスタンダードアセットにどうやら便利なものがあるようです。
[Assets]→[Import Package]→[CrossPlatformImput]を選択
Standard Assetsの中に新たにCrossPlatformImputというフォルダが追加されています。
中のPrefabにあるMoblieSingleStickControlをシーンにおき、Canvasを追加すると
画面に十字キーとジャンプボタンのUIが設置されました!
こんな簡単な手順でモバイル向けのコントローラが配置できるなんていい時代ですね。。。。。。。。。。
あれ?
一向に動かない。。。。インポートしたばかりのスクリプトの中身弄ってない状態でも、あらゆるサイトに載っているスクリプトをひとつずつ試してはReimportしても直らない。。。。
探ること1週間。。。。
わかりました。これが原因でした
いつか何かの拍子に入れていたCanvasが入力を遮ってしまっていたようです。こんな簡単なことだったのか。。。じゃあGUIとこのコントローラを共存させるにはどうすれば良いんだ.....?とりあえず今は実装できたのでよしとします
そしてUIにいろいろ手を加えて...
こんな感じにしてみました。十字キーの方は画像を差し替えただけで機能はあまり弄っていません。インスペクターから可動範囲を後ろの白いシルエット画像あたりまで変えた程度でしょうか。ただこの時に画像をただトランスフォームで移動させるだけではタッチ範囲を変えたことにはならないことに注意しましょう。CrossPlatformのバーチャルパッドはアンカーの座標を中心としているようなのでこちらも座標を変えてあげる必要がありました。
真ん中のリボンがアンカー
そしてもう一方の時計のマークは最初のジャンプボタンなのですが、仕様を大きく変更しようと思いこのアイコンにしました。ここまで作りながら考えていたのですが、今回のゲームは時間を操るアクションにしようと思いました。というわけでこのボタンは高速化のボタンにしようと思います。専用の機能をこれからどんどん足していくひつようがありそうです。
ずいぶん久しぶりの更新ですね。いろいろやらなければいけないことが多くて忙しいですがもっとペースをあげていかないと....
No.002 進捗状況04
アンスース・ダルジャン セーシェル共和国
みなさんこんにちは🌚
バイオハザード7を繰り返しやるうちに怖さに隠れていた製作陣の仕掛けの誘導のうまさに驚嘆したブルーノです。特にビデオテープ「ミア」の部分はとても自然と誘導されていると思いました。モールデッドの配置と出現のタイミングはめっちゃビビるんじゃ😡😡😡
さて今回は目に見えるオブジェクトや展開について作っていこうと思います。
まずゲームに活気を出すため、モブとなるアセットを配置したいと思います。
前回にもちょっとだけ出てきましたが、すごい適材がいました。これを今回は使います。
いろんなタイプの色があるようですね。全部使って出してみましょう
イーサンくんを取り囲む6人の男たちです。
アニメーションも6つほど入っていました。これをスクリプトから取得して制御したいと思います。
AudienceControllerというスクリプトを作成。
シーン上のすべてのAudienceたちにアタッチ。なぜか親に変更を反映させるapplyタブがopenになっているので仕方なく全部を選択してアタッチしました。
ではスクリプトを編集していきましょう。
ここを見ながら作ります
animationをStartメソッドで取得し、とりあえずZボタンを押したら拍手するようにしてみました。再生が終わればidleに戻します。
実験してみると...
全員が祝ってくれました。成功です😀
では街の人っぽい動きに変えていきます。
ランダムで生成したint値によっていろんなモーションをするようにしました。せっかくintを取得したのにanimationコンポーネント内のanimation clipの取得の仕方がわからないせいでコルーチンの中身が無駄に長くなってしまっています。どこに載ってるんだろう🤔
みんな別々の動きでモブっぽいです笑
では今回はもう一つだけオブジェクトを作ります。
3Dアクションといえばやっぱコインですよね!というわけで、コインのオブジェクトを実装していきます。
何気にこれBlenderで自作しました。友人に質問しまくって簡単なものですがつくれました。時計をモチーフにしています。ではシーン上にこれを配置しますが、、、
プレビューだと金ピカなのにシーンだとなんか土みたいだなあ...
ここで友人に教えてもらった魔法を使います。
[GameObject]→[Light]→[Refrection Probe]を選択
なんかごちゃごちゃした画像を用意(なんでも良い)
TextureTypeをDefaultに、TextureShapeをcubeにします
これをReflectionProbeのCubemapに指定すると
いい感じに金ピカ!Reflection Probeの画像を反射させることができるんですね。
サンキュー友人😆
インスペクターのBoxSizeをいじると反射の有効範囲を変えられます。
また、反射させたくないオブジェクトはそれぞれのメッシュレンダラーのReflection ProbesをOffにしておくと無効にできます。すべてに反射させると重くなりそうなのでコイン以外は今回切っておきます
そしてイーサンがコインに触れたことを取得するためにコライダーをコインにつけます
Box Colliderじゃ判定ガバガバですがまあ気にしないでおきましょう。
では今度はコインの動きを制御していきましょう。とくあるゲームの中のコインは浮いていて、くるくる回ってたりして、取得すると上にピコーンって動くようなイメージですよね。これを実装したいと思います。そこで、Animatorコンポーネントを使っていきたいと思います。
Add Componentの欄からAnimatorを選択
Animatorコンポーネントがアタッチされましたが、これだけでは動きません。アニメーションを制御するのは青字でもありますがControllerというもので、これはそれをオブジェクトに再生させる再生装置のようなものらしいです。ではこのコントローラを作っていくのですが、実はコントローラもアニメーションの動きの中身ではなく、文字通りアニメーション同士の相関性を管理するコントローラでしかないのです。各々の動き自体はアニメーションクリップというものによって管理されます。というわけでこのアニメーションクリップを作っていきましょう。
Window→Animation→Animationを選択します
これがアニメーションの動きを編集できるウィンドウです。
こんなウィンドウが出て来ました。今この画面ではAudienceのアニメーションを作り出そうとしていますが、これはヒエラルキービューでAudienceを現在選択しているためです。今回はコインのアニメーションを作成するのでコインを選択してから[Create]をクリックします。
新しく作るアニメーションクリップの名前を選択。
Coin Idleという名前のアニメーションクリップを作成しました。左上で名前が確認できます。ちなみに、この名前が表示されているタブをクリックするとそのオブジェクトの他のクリップに移動したり、また新たにアニメーションクリップを作成することができます。まずは待機状態のくるくる回っているアニメーションを作成します。
Add PropertyからTransform→Rotationを選択
Rotationのクリップができました。右の時間らしき目盛たちがタイムラインで、現在見えている中では1秒間でのアニメーションを編集できるようになっています。右にスライドすれば当然もっと長い時間までのアニメーションを組むことができますが今回はとりあえずこの1秒の中で何回か回転するようにしてそれをループ再生することでコインがくるくる回っているアイドル状態を表現したいと思います。
さて、タイムライン上にはそろばんのように現在ひし形の玉が一つ表示されていますね。CoinNew : Rotationという行の玉にはrotation情報が入っており、タイムライン上でさまざまなrotation情報をいろんな時間に置くことで再生した時にそれらを滑らかに補間してくれます。
玉の作り方はいたって単純です。左上の赤丸をクリックし、レコードモードにします。
するとタイムラインとrotationに対応するオブジェクトのインスペクター欄が赤くなりましたね。タイムラインにかかっている白の縦線は時間の目盛を押すことで移動でき、インスペクター上の数値を変更するとこの縦線の時間にその数値の情報が玉として記録されるということです。ではいろいろ数値を記録してみます
1/4秒ごとにコインが1回転するように組んでみました。レコードボタン横の再生ボタンで再生すると...
画像なので分かりにくいですがくるくる回転しています。
タブの下側の[Curves]という欄をクリックするともっと視覚的に数値の変動加減を編集できます。待機状態のアニメーションがこれで完成したのでこんな感じでコインゲット時のアニメーションも作ります。
名前の欄をクリックして、クリップを変更したり追加したりできます
アニメーションが完成したら次はそれを制御するコントローラを作ります。それをAnimatorコンポーネントに適応したら完成です!もう少しですね
実はアニメーションをCreateした時に同時に空のコントローラも生成されています。
コントローラの中身はこんな感じになってます。中にある四角ひとつひとつのことをステートと呼び、必ずEntryステートからアニメーションは始まり、矢印に沿って進みます。最初はidleに伸びているはずですが、もし最初のアニメーションが思惑と違っていたら目的のステートで右クリックし、Set as Layer Default Stateを選択しましょう
今、二つのクリップは独立していて切り替わることは絶対にありません。そこで、Entryステートが行なっているようにidleステートで右クリックし、Make Transitionで目的のステートまでトランジション(矢印)を伸ばします。
ただこれだけではアニメーションが遷移する条件がないので遷移されません。トランジションをクリックして情報を見ると
遷移する具合や条件(Condition)を指定できます。このConditionも自分で決めなければならず、先ほどのコントローラのビューの右上のParametersから追加します。
条件の値も様々な型の変数が用意できますが、今回はTriggerにします。
これで作った条件を改めてインスペクター上のConditionに入力します。これで準備は完了です。あとはスクリプトでAnimatorを取得し、このTriggerを起こせばアニメーションが遷移します。
とても単純ですが、12行目でAnimatorを取得し、31行目でTriggerを引き起こしています。再生してみると
触れると上にくるくるしました!!大成功です😸こんな調子でオブジェクトを今後追加した際はこうやって動かしてにぎやかにしたいと思います。今回はここまでにしておきます。
一つ一つの過程をメモしていたらすごい量になってしまいました。でもほとんど画像なんですよね。。。いろいろあってかれこれ1ヶ月もこれの土台作成で止まっていました。おもしろいの作るぞー
No.002 進捗状況03
みなさんこんにちは🌚
スマブラで1on1もぐってもクラウドとキャプテンファルコンしかあたらないブルーノです。今回はいよいよゲーム的な側面を持たせてきたいと思います。
まず、テストプレイ用に人物を配置します。
[Assets]→[Import Package]→[Characters]で、キャラクターアセットをインポートします。
Unity標準のイーサンくんをインポートしました。Standard Assets→Character→ThirdPersonCharacter→Prefabsの中のThirdPersonControllerをシーン上に配置します。
なんか周りにいますが気にしないでください。そしたらシーン上に最初からあるMain Cameraオブジェクトをドラッグ&ドロップでこのオブジェクトの子にします。
もうこれだけで再生ボタンを押せばイーサンくんを十字キーで操作すること・カメラが追跡して来てくれることを実装できてしまいました。
自分で作った街を散策するの楽しい〜〜〜🤩
ですがまだ少し問題がありました。今のままでは縁石や歩道をイーサンくんの足が貫通していました。
ここで注意するのがColliderについてですね。Unityのオブジェクト同士の接触や当たり判定にはこのColliderコンポーネントが使用されます。(正確には他にも方法はある)
道路のオブジェクトや建物のオブジェクトにColliderコンポーネントをそれぞれつけていきましょう。
前回作ったステージのある道路のオブジェクトのインスペクターです。Mesh Colliderという名のコンポーネントがついていますね(なんで2つついてんだ)。
コライダーにも様々な種類があり、当たり判定の形によってコライダーを使い分けます。このMeshコライダーはオブジェクトのメッシュにあわせてコライダーを貼ってくれるという特性があるのでモデルの形に寸分違わない当たり判定をつけられるという利点の一方で頂点数がもともと多いモデルに適応すると処理が重くなりやすいといった特徴もあります。今回は道路にのみこのメッシュコライダーを使用し、建物にはそれぞれBoxコライダーを使いました。
とある建物のプレファブのインスペクター。上画像の緑の線で構成されているのがコライダーで、今回は主人公を通しさえしなければ良いので足元にだけ作りました。した画像を見るとわかるように3つのBoxコライダーを用いることで玄関等の地味な突起のあたりをカバーしています。今回はここまでにしておきます。
動くオブジェクトとイベントについてまとめるといっておきながら記事の中で動くオブジェクトがイーサンくんだけだったり当たり判定というイベントと呼べるかどうかも微妙な部分の制作過程だけになってしまいましたが記事が長くなってしまったので次回に繰り越します。今回は最低限の世界の検証環境を整えたということで😓
最近は色々やることがあって更新ができていませんでしたが、また続けていけるように頑張りたいと思います。
No.002 進捗状況02
パラワン島 - フィリピン
みなさんこんにちは🌚
食費を削るために自炊をしているのですが料理に凝り始めたら材料費がかさんで本末転倒になってしまっているブルーノです。チーズはやっぱ高い(ーー;)
さて今回は以前に引き続き進捗状況と気が付いたことをメモしていきます。
まず現在の状況がこちら
まだ建物ですら半分程度ですね😅
一応道は敷いたのでそこに建物や地面をくっつけて作っていきたいと思います。
街の真ん中に意味もなく巨大ゴリラを置いてみました。このゴリラを置いた時にちょっと気になったのですがあまり違う3Dモデルばっかり作っていると世界観がごっちゃごちゃになってしまう....のはどうでもいいんですが容量が大きくなってロード時にも読み込みに時間がかかってしまうのではないか?ということです。というわけであまり新しいアセットを使わずに今度はUniteTokyo2018のMike Geig氏による「Unityでサクッといいビジュアルを作るテクニック講座」で実演されていたテクニックを使ってみました。
例えばこの高層ビル群なんですが今回買ったアセットにはそこまで高いビルが入っていなかったので上の方はなんとか工夫して高く見せかけてみました
このビルの真ん中の継ぎ目らへんはよく見ると...
下のホテルを一回り小さくして重ねただけであることがわかります。ビルの途中に入り口は不自然なのでこれまた元々のビルの屋上にあるダクトを重ねています
ビルに大きなチョークボードが突き刺さっているのですがこれは
裏に逆さになった入り口が。これはビルを180度回転させて逆さにしています。
おかげで継ぎ目は綺麗です
全体的な街が完成しました!ただスマホゲーでこの街を読み込んで中で自由に動けるのか疑問が残るのでもし無理そうならどんどん減らしていきます。
記事にするとあっさりですがレイアウト考えたり一つずつ建物を作っていくのにだいぶ時間がかかってしまいました。次回は動くオブジェクトやイベントに関するものを街に配置して活気を出していきたいと思います!
学校の課題がこの季節でとても多くてなかなかこちらに時間を割けないです😵かといって課題とUnityしかやっていないと体がなまってテニスがぜんぜんできないし😠テニスとゲーム作りばかりやれるような夢の環境はないものか...
お絵かき デッサン7/16
今日のデッサンは腕組みの人です。顔の書き方がいつまでもたっても上手くならないです。体もガッチリしているし指の先や耳など細かいところも丁寧に書かなければいけませんね。
ちなみにモデルはeasy poser というアプリを使って書いています
無料版は使えるコンテンツが限られていますが、それでも十分な数のモデルやポーズが揃っています。pro版を買いたくなってしまう...!! ところでこれもUnityで作られてるんですね。すごいなあ
No.002 進捗状況01
6
ウーゼドム島
みなさんこんにちは🌚
ビーフシチューのルーを買っても豚肉を使うと途端に味がカレーになってしまうことに気づいたブルーノです。さて今回から新しいゲームの開発に取り組んでいこうと思います。
まず最初にプランニングをしました。最近流行りのPDACではありませんが、どんな作業も計画をたてておいた方が明確になりますね。私の場合は素材をフルスクラッチできないので、大抵はApp Storeを眺めて面白そうなアセットからアイデアを膨らませる方式を現在は取っています。するとこんなアセットを見つけました。
有料ではありますが格安ですし、とてもクオリティが高いので今回はこちらのアセットを使った箱庭ゲーのようなものを作っていきたいと思います。
人をたくさん立たせてみたいですね。複数の種類でなおかつあまり容量が大きくならなそうな人のアセットは...
ちょうど良さそうなのがありました。これを使わせていただこうと思います。
とりあえずインポートしてみました。街を作っていきたいと思います。
建物から道から小道具まで様々な環境が並んでいます。これで200円なら格安ではないでしょうか
道を並べると良かれと思って敷いておいたPlaneと重なってしまっていますね。Planeをほんの少し下げておきます。
少しずつ街を作っていきます。ここでちょっとだけ気をつけたのが、右のヒエラルキーリストのように建物と道を一つのオブジェクトの子にまとめておくときに、親のオブジェクトの座標を全て(0,0,0)にしておくことです。どうやらドラッグ&ドロップ以外の方法でオブジェクトを生成すると(Prefabの場合は座標も与えられてるから影響されない?)シーンビューの真ん中に配置されるようで、まとめるためだけに生成したオブジェクトが座標を持っているせいで子がみんなその影響を受けてスクリプトを書く際に混乱することが最初の時も多々ありました。さてどんどん街を作っていきます。
道路などは縁石と道路など一緒に使うことが多いです。そんな時はよく使うものの位置関係を一つの親にまとめてプレファブ化するとレゴブロックのように作れて効率よくなるような気がします。
こんな感じで😄あー楽チンですねー。これならすぐに街が....
果てしない😱
地道に頑張ります。。
今回はここまでにしておきます!
これからもちょくちょく進捗状況をあげていけたらいいなと思います。ゲーム作ってる時間は楽しいですね。ちなみに今回は自由に操作できる箱庭ゲーを作りたいと思っています。
そういえばこの前、あるゲーム会社のインターン説明会のようなものに行ってきました。ゲームを作ってお金を実際にもらっている方々の運営体制を聞くことができたのはとても良かったです。どこでもいいからゲーム会社入れたらいいなあ