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

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

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

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

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

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

 

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

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

隙あらば自身の現状を。

江上宿六です。

 

最近は割と真面目に備忘録を記せているのは良い事なんですけども、もう少し

ゲームを作る方に情熱を持って取り組めたりすればと思っております。 まぁ、

綴れる事が無くなった時がスタートかもしれませんし、今は案を練らなければ。

好きなゲームっぽいものを作るだけに終わるのはもう止めにしたいですから。

 

最近はモデリングもだいぶご無沙汰で、そっちに関してはそれほどブランクを

感じていないので大丈夫だと思いますけど、そろそろ1体欲しい所ではあります。

作っておけば潰しが利きますし。 優先的に潰されてる気がしますけども。

 

問題はやっぱり生活ですかね、主に酒。 最近はUnityの勉強も進められてるし

その辺のメリハリというか切り替えは以前よりはマシだとは思うんですがね。

やっぱり駄目ですな。 あちらの空間で迷惑かけてないか起きた時に不安になる。

 

その他なんとかしたいのは、Wiiプロコンのスティックが壊れててゲームにも

作業にも支障を来しているのが。 何か良いゲームパッド無いもんかしら。

あとAmazonの発送が遅すぎて出かける予定が立てにくいのもちょっとね。

 

Unity備忘録32頁目「親子関係と回転制御2」

江上宿六です。

 

前回の続きになりました。 カメラの向きを変えるとその分だけ動きがズレる

というのは操作として致命的と言いますか、絶対に嫌なやつですよね。

何故そうなるかですが、そりゃ単純に向きを絶対的に指定しているからです。

続きを読む