今年のこと、来年のこと。

江上宿六です。

 

早いもので今年ももう終わりです、生活は殆ど普段通りですけども。

という事で今年を振り返ったり来年の抱負みたいなものを語ったりしましょう。

 

自分にとって2018年は始まりの年だったと言えるでしょう。

年初こそ去年から続いたうつ傾向を引きずってましたけど、ふとしたきっかけから

モデリングをしてみようとなったわけです。 きっかけのものはもうあれだけど。

f:id:y6yegami:20181231153119p:plain f:id:y6yegami:20181231160105p:plain

最初は動画を見て勉強です。 参考にした動画のバージョンが古くて苦労したり

ひたすら講座と同じ様に作ったりして、なんとか基本操作に慣れていきました。

f:id:y6yegami:20181231173641p:plain f:id:y6yegami:20181231175129p:plain

教本に手を付けた時期。 ずん子本もBlender標準テク本もそこらのレビュー通り

難しいものでしたが、やり遂げる事によって割と力もついたのではと思いますね。

イラストの通りに作るというのが基本無理でデザインを独自解釈したり妥協したり

 

色んな考えが出来るようにもなりました。

 

そんな中一つ思い出したのは、自分はゲームを作る人だという事です。

なので以前より興味のあったUnityにも手を出しますが、その副産物というか

手を出してしまったのがあれでして、良かった事なのだとは思うのですが

精神の起伏を生む原因となってしまったのが困ったものです。

f:id:y6yegami:20181231211853p:plain

ともかくオリジナルのキャラを作るのと並列して備忘録を記すようになりました。

人に説明する事が出来なければというのもありますが、自分の記憶の保護に

一役買っているのは確かです。

f:id:y6yegami:20181231213759p:plain

とか言いつつも目的意識も薄く、既存のうちの子達をモデリングするのはともかく

せっかく勉強してきたUnityを忘れたり体たらくな時期に差し掛かります。

これではいかんと唐突に企画を始め、キャラクターを考えていった結果は

残念にも新たにモデリングを始めるきっかけとなってしまいました。

f:id:y6yegami:20181231214508p:plain

そして心を入れ替えて企画も練り直し、Unityも再勉強している今に到るわけです。

BlenderもUnityも今年になって初めて触ったという事を考えると、まさに

始まりの年と言っても良いでしょう。

 

さて、それでは来年の抱負になるわけですが。

これまでの経験から言って来年中にゲームが完成するとは到底思えません。

なのでそこに関しては今のペースを維持し、引き続きUnityとモデリングを頑張り

飛躍の年というか、飛躍のために力を溜める年にしたいです。

 

皆様良いお年をお過ごしください。 そしてまた来年も宜しくお願いします。

ほんの少し気づいた事とか。

江上宿六です。

 

正直な所こういう風に工程を上げるだけなら備忘録は要らないと思ったり。

一応は考えて実現させるまでの苦労や辿り着いた結論を示しておく事はまた今後

ブランクが出来たりした時に有用だったりするとは思うんですけども。

 

そんな中気づいた事なんですが、アニメーションの切り替わりとか現状だとか

正しく取得できなかった原因みたいなものが分かったような気がします。

 

AnimatorControllerでアニメーションを遷移させる矢印がありますが、そこら辺の

挙動を色々と確かめてみたらTransitionDurationがどうにも悪さをしているというか。

 

これアニメを混ぜ合わせて滑らかな動きを実現する感じのものなんでしょうけど

フラグを立ててアニメを切り替えたと思ったら混ざっている途中の動きを行い、

その時はまだアニメーションのStateが切り替わっていないという感じなのです。

まぁ、あまり言ってる意味は分からない感じですけど。

 

混ぜ合わせが終わった時にStateが切り替わるので、攻撃ボタンを押して攻撃の

アニメーションに入ってもまだアニメはアイドリング中なので、移動とかの操作も

出来ますよ、みたいな処理になってしまっていたのだと思います。 なので

全部0にしておきました。 瞬時に切り替わっても困ることはあまり無いですよね。

HasExitTimeもフラグやアニメが制御出来ていれば設定する必要ない気がしますね。

 

それとCharacterControllerなんてものがあるらしいじゃないですか。

制御が簡単になったりRigidbodyなんかを使わずとも判定が出来たりするようです。

どうなんでしょうね、なかなか凄そうな気がするんですけど。 個人的には

なんか勝手に制御や判定されるのを好まないので二の足を踏んでいますが、

機会があれば使ってみたい感じでもあります。

 

結局はというか、今後やるオブジェクトの投げ飛ばしにRigidbodyやら何やらを

使う事になるでしょうが、重力や物理挙動を好き勝手にやらせる事は無いです。

Unityはこんな所でしょうか。 まぁ、間違ってる事もあると思いますが。

 

あの世界については、Unityのバージョンが2017対応になったりしたようですが

今まで使ってたバージョンもとりあえず今は使えているので別に良いですかね。

それとアバターの処理的な重さとかを評価するシステムが出来たりしたようで。

 

自分のも色々確認してみましたが、メッシュが3つに分かれているのをつつかれ、

ボーン数が規定より多かったのでMediumでした。 メッシュをくっつければGood。

 

ボーンは75以下ならば良いらしいのですが、105使っています。 自分は表情を

ボーンを動かす事で作ってるので、それを目指すならばそれらのボーンを消して

シェイプキーを使ったりする必要がありそうです。 目指すならばの話ですが。

 

そんな感じですかね。 今年のまとめだとかそういうのはまた後日です。

Unity備忘録34頁目「オブジェクトを制御してみるやつ2」

江上宿六です。

 

前回の処理周りを少しまとめてみました。

f:id:y6yegami:20181217153253p:plain

一番近いタグ付きのオブジェクトを探す処理を関数化しました。 foreach文と

FindGameObjectsWithTagでObjectタグのついたオブジェクトを探したら

Vector3.Distanceを使っての距離を測り比較し、一番近いオブジェクトを返します。

f:id:y6yegami:20181217154337p:plain

OnTriggerを使って一番近いオブジェクトがキャラの持つ判定用のColliderと

重なっているか判定してます。 正確には少し違います、表現的な面では。

f:id:y6yegami:20181217153815p:plain

その状態を取得できる関数です。 これらを使って操作をしていきます。

 

とりあえず持ち上げたり降ろしたりするアニメーションを作ったので、

それに合わせてオブジェクトを動かしてみたいと思います。 持ち上げて運ぶ

みたいな事を実現するには親子関係を設定するのが簡単だと思います。

f:id:y6yegami:20181227185755p:plain

これは持ち上げるボタンを押した時の処理ですが、まず対象のオブジェクトが

範囲内にあるかを調べ、あれば持ち上げるアニメを再生させています。

アニメはともかく持ち上げ対象のオブジェクトを取得し、そのtransform.parentに

キャラのtransformを代入します。 これだけで親子関係の設定が出来ます。

f:id:y6yegami:20181227210715g:plain

だいたいやってみた結果ですが、親子関係が設定されたのでキャラと連動して

動く様にはなりましたが、流石にこれでは持ち上げてるとは言えませんね。

アニメーションを使って持ち上げている感を出したいと思います。

f:id:y6yegami:20181228095443p:plain

判定内での処理をこのようにしました。 説明すべき事は多いのですが、

まずは持ち上げられるオブジェクトの位置をliftの位置にしています。

liftはキャラの子である空のオブジェクトで、キャラの前方に配置されています。

 

持ち上げられるオブジェクトとこのliftに親子関係を設定し、liftをアニメーションで

動かす事で持ち上げているように見えるようにしました。 最後のLiftUpは

単純にSetBoolを行わせる関数を呼んでいます。

 

オブジェクトそのものをアニメーションさせれば良いのではと思っていましたが

どうにも上手くいかず、苦し紛れに思いついた方法です。 親子関係の位置情報と

アニメーションの位置情報が混ざり合ってそれはもう大変でした。

f:id:y6yegami:20181227212410g:plain

このようになりました。 とりあえず持ち上げている感は出ていると思います。

f:id:y6yegami:20181227214038p:plain

置く時もキャラのアニメーションと同時にliftを置くアニメーションを再生し、

その終わるタイミングでtransform.GetChild(0)のparentをnullにしています。

 

このGetChild(0)はそのオブジェクトの0番目の子を取得するもので、これは

liftにアタッチしたスクリプト内で行っているので、liftの0番目の子を取得できます。

そのparentをnullにする事で親子関係を切ることが出来ます。

f:id:y6yegami:20181227214649g:plain

gifでは親子関係が切れたのは確認出来ませんが、問題なく動いています。

 

今回はこんな感じです。 次回以降何をするかは、とりあえず未定ですが

持ち上げたオブジェクトを投げたり、しまったりみたいな感じがやりたいですね。

今ちょっと考えている事。

江上宿六です。

 

指定のオブジェクトを持ち上げて運んで降ろすみたいな事を試しています。

その為のアニメーションも作りましたし、簡単に出来るだろうと思ってましたが

思いのほか難しいというか、遠回りをしてしまったようです。

 

キャラの動きに合うようにオブジェクト側に持ち上げられるアニメーションを

作ってみたわけなんですがこれがうまくいかなかった感じですね。

 

持ち上げアニメーションが終わったら親子関係を設定し、降ろすアニメーションが

終わったら親子関係を解除する、これで行けると思ったのですけどもなにやら

降ろす位置が正しくない感じになってしまいました。

  

検証した結果、アニメーションクリップ内で設定された位置情報がそのまま

再配置される位置になっているので、これをなんとか出来ればという感じですが

現状なんとか出来ていませんね。

 

アニメーションの終了タイミングを見計らってキャラの位置を加えてみても

変わらない再配置位置にオブジェクトが置かれるので、色々と謎です。

 

ちょうど今新たなアプローチ方法を思いついたのでやってみますけども、

結局の所どうなるかわかりませんね。 何か良い方法は無いもんかのう。

 

追記:

f:id:y6yegami:20181224165346g:plain

唐突な閃きによって上手く行くことほど爽快なことはない、という感じ。

オブジェクトの方にアニメーションをつけて持ち上げてるように見せるのではなく、

今はとりあえず範囲判定用のやつを使ったけども、持ち上げ用のオブジェクトを

用意してやって、親子関係とアニメーションを設定して再生してやれば

対象オブジェクトの位置に不必要な影響を与えずに済むのでは、という感じで。

 

これホント一週間くらい悩んでいたので、なんとか前進出来そうで良かった。

試行錯誤でスクリプトもぐちゃぐちゃになったので、直しておかないと。

Unity備忘録33頁目「オブジェクトを制御してみるやつ」

江上宿六です。

 

相変わらず酒で酷い事になってますけど、反省で作業が捗るからリクエストでアウト。

f:id:y6yegami:20181215172551g:plain

移動出来るようになりました。 なんかもうゲーム感出てきたなあって。

続きを読む