Blender備忘録47頁目「手法を見直してみた」

江上宿六です。

 

もうUnityでゲームが作れるという自信はありますけども、作れるものを作るとか

そうじゃなくて本当に自分が作りたいものについて考えたら、ありませんでした。

そんな感じで暫く魂が抜けてましたけども、とりあえず作ろうと企画していた

ゲームのキャラを作ってみることにしました。 やっぱりBlenderは楽しいです。

 

そこで過去にやった手法を見直してみるというか、自分でやって楽な方法が

見つかり次第なんか記してみようという感じで、記すことに到ったわけです。

f:id:y6yegami:20180809162745p:plain

だいたい顔の表面部分を作っていく感じの所ですね。 ここからメッシュ状に

していくわけですけど、最近は目の周りを一周するように面を作っていくのが

良いと思ったので、それを実現するのが楽になる方法を探してみました。

まずは上の画像のようにナイフで目の輪郭を作り、選択しておきます。

f:id:y6yegami:20180809163410p:plainf:id:y6yegami:20180809163657p:plain

そうしたらIキーを押して面を差し込みますが、幅は0です。 あとは辺を

ループ選択して拡大してやれば、なかなか綺麗な感じに外周が出来ました。

注意としてはループ選択して面が選択されない時の辺を拡大する所ですね。

そうでないと面が裏返ってしまいますので。

f:id:y6yegami:20180809164210p:plain

メッシュが出来てまつげを作る時、平面を追加するよりは目元を選択して

Shift+Dで複製し、Pで別オブジェクトにすると頂点位置とかの関連性が残るので

何か便利だったりするかもしれないと思った、ウェイトペイントとかでね。

別に後に結合するので別オブジェクトにしなくても良かったかもしれない。

 

f:id:y6yegami:20180809164611p:plain

まつげや眉毛などを作りマテリアルも設定したらラティスを使って立体的にする。

これが割と煩わしかったんですよね、あんまり好みの形にならないと言いますか。

なので考えました。

f:id:y6yegami:20180809164917p:plainf:id:y6yegami:20180809165043p:plain

ビターン。

 

前々からモディファイアーのシュリンクラップを使って何か出来ないかなって

思ってたんですよね、眉毛を顔にフィットさせるとか色々。 その結果がこれ。

立方体に細分割曲面を追加をして球状にし、その表面に貼り付ける感じですね。

 

頭の形もラティスを使ったり、その後自分で調整するより綺麗だと思います。

この細分割された立方体は後でスタッフがおいしく後頭部に使いました。

f:id:y6yegami:20180809165649p:plain

シュリンクラップの中身です。 オフセットが-0.1、モードをプロジェクトにして

軸をY方向にしてみました。 まぁ、お好みな感じで使ってください。

現状(進捗も)こんな感じです。 何かまた何か思いついたら記しますので。

 

追記

この細分割立方体だと頭の形しかどうにか出来てないと、その後の調整で思った。

シュリンクラップ技にはまだ改善の余地がありますな。

Unity備忘録22頁目「番外編1」

江上宿六です。

 

とりあえずここまでを振り返って軽く反省会をします。

 

基本的に教本ベースの中身だけども、教本の方は殆ど2Dで作っていたので

それを3Dに置き換えて何かやって行くのは大変だったけども、そのことが

自身の理解を深めるのにも一役買ったと思われる。 入力系は教本にはない

感じの事をやったので、そこは良かったかも。

 

出来上がったものについては、なんとも言えない所ですね。 ただ単に

処理なんかを説明していく流れで機能が拡張されていっただけですので。

面白くしようと考えてはみましたけども、結局は行き当たりばったりで

ゲームを作るのは止めた方が良いという教訓にはなりましたかね。

 

色々と気づいた点としてシーン切り替え時の変数の受け渡しとか、データの

持ち方なんかはちゃんとルールを決めておくべきだと言いますか。

 

今回はUIにスコアを運んでもらいましたけど、ステータスを所持する専用の

スクリプトやオブジェクトを用意したり、今後やるサウンドだったらそれを

保持するのを作ったり。 ちゃんと決めずにキャラにサウンド乗せたりすると

規模が大きくなると酷い事になりそうですし。

 

今後は、まず今回の教本に書かれているゲームを作る流れなんかについて

考えてみたり、サウンドの再生やアニメーションなどについて記していきたいと

思っています。 サウンドはびっくりするほど簡単ですけども。

一冊読み終わり。

江上宿六です。

 

Unity関連の本を読み終わったので軽く何か書いてみようという感じですね。

なかなか台風が来てますけど。

キャラクターであそぼう! Unity日和。 ?UnityでBlender自作キャラクターを読み込んで楽しむ、シーン作り

キャラクターであそぼう! Unity日和。 ?UnityでBlender自作キャラクターを読み込んで楽しむ、シーン作り

 

これはBlender標準テク本とほぼ同時期に買ったもので、Blenderにハマる一方で

Unityの方がちょっと手間だったので暫く放置されてしまったものです。

 

その後Unity5の教科書を読み終えたことでUnityの操作にも対応出来たので

一気に読み進む事が出来たというものですね、基本は大事です。

 

中身については、所々使えそうなテクニックがあったと思います。

シーン作りやライティング、説明は多くないけどもパーティクルの設定とか。

3DモデルのアニメーションはUnity5の教科書にはそんなに無かったので

良かったかも。 あのAnimatorの使い方は実際に使えそう。

 

ShaderForgeとかその辺は当面必要と思えないので参考に出来ないのはアレ。

最後のNavMeshAgentもなんとも言えない感じ。 あれ自分ので使えるのかね。

f:id:y6yegami:20180728180012p:plain

それはそれとしてベクトルの使い方が色々出来るようで感心したのはある。

備忘録用に作ってみたやつも何か記述が改善できそうな気がする。

どうでも良い話ではあるがスペルが所々怪しいのは愛嬌ですな、うむ。

 

Blender要素はBlender本読んだ方が良いですけど、Unityで使えるボーン構成が

ちゃんと書いてあったりするのは評価点ですし、実際参考にしてます。

 

まとめると、若干ポイントは絞れてないが役立つ情報もそれなりにあった。

次はどういう本を見ていけばいいかなあ。 キャラ制御にもゲーム制御にも

詳しい良い本がないかな、クオータニオンももっと知らないと。

 

既に自作ゲー行ける自信はあるんだけども、規模小さいのからやろうかな。

Unity備忘録21頁目「シーンの切り替え2」

江上宿六です。

 

シーンの移動は出来ました。 あとは最終スコアを表示するだけなので、

早速GameDirectorをFindし、そのスコアを基にUIを切り替えてやりましょう。

f:id:y6yegami:20180723103647p:plain

GameDirector君がいません。

 

そりゃそうです、GameOverシーンにはGameDirectorは作っていませんから。

でもゲームシーンで作ったGameDirectorは何処へ行ったのか、使えないのか。

それはシーンの移動と同時に破棄されました。 なので使う事が出来ません。

 

ではどうすれば良いのか。 方法はいくつかあるようでしたが、自分が選んだのは

DontDestroyOnLoadを使う方法です。

f:id:y6yegami:20180723104650p:plain

ゲームシーンのGameDirectorのStart内です。 こうする事でこのオブジェクトは

シーンの移動によって破棄されなくなります。 実行して確かめてみましょう。

f:id:y6yegami:20180723105227p:plain

DontDestroyOnLoadの中にGameDirectorを発見できました。 これでFindを使い

スコアを取得といきたい所ですが、凄い勢いでエラーが吐かれています。

これはGameDirectorのUpdate内で、既に破棄されたオブジェクトにアクセスを

しようとしているからですね。 それを無視して画面をクリックすると

f:id:y6yegami:20180723105605p:plain

GameDirectorが増殖しました。 どうみてもこれは駄目なやつですね。

ではどうすれば良いのかという事ですが、自分はこんな風にやってみました。

f:id:y6yegami:20180723110108p:plain

8行目、GameDirector用とスコア表示用のGameObjectを宣言しています。

次の行ではスコアを入れる変数を宣言しました。

 

Start内の12行目、GameDirectorを探して代入し、次の行でGameDirectorの

GetScoreを呼んでスコアを取得、gameScoreに代入しています。

f:id:y6yegami:20180723110653p:plain

出し忘れてましたけどGetScoreはこんな感じです、GameDirector内です。

14行目はスコア表示用のやつを探して代入しています。

 

スコアが取得出来、自らのgameScoreを使ってスコアを表示出来るように

なったので、16行目でgameDirectorを破棄しています。 非情ですが用済みです。

f:id:y6yegami:20180723111208p:plain

あとはUpdate内でUIを書き換えてやれば良いですね。 実行しましょう。

f:id:y6yegami:20180723111508p:plain

正しく表示されているハズです。 繰り返しゲームを遊んでも特におかしな点は

見つからない、見つからないという事にして、これでゲームは完成とします。

 

今回はここまでです。 次回は、番外編で反省会ですかね。

Unity備忘録20頁目「シーンの切り替え1」

江上宿六です。

 

ゲーム的な処理は終わったと言えど、調整する点はあったりします。

スコアの入り方を変えたり、Cubeの移動が斜めだと速いので正規化して正しい

移動速度にしたり、Sphereの乗ってる数によって更に床の落下速度を上げたり、

Sphereの発生間隔に波を持たせて後半ほど厳しくするとか、Cubeの落下処理を

まだ作っていないなど、様々です。

 

しかしそこはそれほど重要な点ではないというか、ゲームの処理的な所は

Unityの備忘録にはそれほど必要ではないわけです。 適当に調整しましょう。

関数の呼び出し方だとかはしっかり覚えておきたい所ですけども。

 

という事で今回はゲームオーバー処理としてシーンの移動を行います。

シーンの移動を行うには、もちろん移動先のシーンが必要になるので追加します。

プロジェクトビューのCreateからSceneを選択すると追加されるので

GameOverとでも名付けたら、ダブルクリックなどでシーンを開きます。

見慣れた空っぽな画面が表示されるので、UIを設置していきましょう。

f:id:y6yegami:20180723094921p:plain

これ以上無い適当なゲームオーバー画面です。 とりあえずこの状態で保存し、

シーンの移動が出来るか試しましょう。 まずはシーンをゲームに登録します。

メニューバーのFileからBuildSettingsを選択します。

f:id:y6yegami:20180723095544p:plain

ここはアプリケーションの出力の設定を行うことが出来る所で、ここにシーンを

登録することで組み込まれて使えるようになります。 AddOpenScenesで

現在開いているシーンを登録するか、アセットからドラッグ&ドロップで

登録する事が出来ます。 注意としてリストの1番上にあるシーンが最初に

呼び出されるシーンになるので、ゲーム部分を1番上にしておきましょう。

 

登録が出来たら次はシーンを移動する処理を書き込みます。 GameDirectorの

スクリプトを編集します。

f:id:y6yegami:20180723100317p:plain

UnityEngine.SceneManagementを定義する事で移動処理が行う事ができます。

f:id:y6yegami:20180723100449p:plain

SceneManager.LoadSceneにシーン名を渡してやる事でシーンが切り替わります。

今回はpublicの関数を作り、それを呼び出して移動するようにしています。

直で書いても良いとは思いますけど。

 

次にこれを呼び出す側、Planeのスクリプトを編集します。

f:id:y6yegami:20180723100825p:plain

y座標が0を下回ったらGameDirectorのMoveSceneを呼び、GameOverに行く

という風にしています。 この呼び出しをするオブジェクトがPlaneで良いのか、

GameDirectorがPlaneのy座標を取得して移動させるのが良いのか考えましたが

答えが出なかったのでこうしておきました。

 

実行してみると、多分無事にシーンが切り替わってくれたと思います。

次は逆にGameOver画面でクリックをするとゲームに戻れるようにしましょう。

空のオブジェクトとGameOverDirectorスクリプトを作り、記述します。

f:id:y6yegami:20180723101643p:plain

クリックするとシーン移動します。 結局こっちでは普通に呼び出してますね。

UnityEngine.SceneManagementは忘れないように。

 

実行してゲームオーバー画面でクリックするとゲームに戻ったと思います。

これでシーンの移動は出来ました。 あとは最終スコアを表示してやるだけです。

だけなんです。

 

という不穏な所で今回は終わりです。 次回に続きます。