ライトを使って、懐中電灯を作り、キャラクターに持たせてみる

Unityのシーンには最初からDirectional Lightが設置してあります(2Dでプロジェクトを作成していなければ)。

このライトは太陽と同じような効果があり全体を照らしています。

今回はこのライトの設定を少しいじってみようかと思います。

GameタブをSceneタブに切り替えるとライトがどのあたりにあり、どの方向を照らしているかがわかりやすいです。

ライトの位置や角度を調整しどのような変化があるか試してみます。

Directional Lightの場合は位置は関係なく、角度だけが影響するみたいですね。

最初から設定をいじると元に戻せなくなるので、ゲームプレイボタンを押した後でライトを選択し、インスペクタ上から値を変更します。

ゲームプレイ中にした設定の変更はゲームプレイ中でしか反映されないので、ゲームを止めると元の設定に戻ります。(変更するものによっては変更が反映されてしまうものもあります)

ゲームをプレイしながら調整し、目的の値を探したい時などは便利です。

DirectionalLightの位置を調整する

上のようにプレイボタンを押した後でDirectional Lightのパラメータを調整します。

ライトの色を赤くしてみる

上のようにColorを変更すると赤い夕陽を表現することも出来ます。

スポンサーリンク

懐中電灯を作成する前にキャラクターの設定をする

次にSpot Lightを使い懐中電灯を作成し、「masasi」君が懐中電灯で辺りを照らせるようにしたいと思います。

その前に「masasi」君の手の位置に懐中電灯を設置しなければならないので、キャラクターの設定変更をします。

アニメーションタイプを変更する

「masasi」君本体のArmy01のプレハブを選択した状態で、インスペクタ上のRigを選択し、Animation TypeをHumanoid,Configureをクリックします。

その前にいろいろエラーが出てますが・・・、ちょっとよくわかりません・・・(ノ_<)
今のところはスルーしていきます・・・。

ボーンの設定を完了する

上のようにDoneのボタンをクリックします。

ボーンの階層が表示される

「masasi」君の階層を見てみると、ボーン(骨)の階層が出来、特定の個所を指定出来るようになりました。

そこで右手に懐中電灯を持たせてそこにスポットライトを設置して、明りを照らすようにしたいと思います。

Unityの3Dオブジェクトで自前の懐中電灯を作成する

無料で懐中電灯を探したんですが、なかったので自前で作ります。

Hierarchy上で右クリック→3D Object→Cylinder
で筒状の形を作り名前を「FlashLight」とします。

PositionのXを2、Yを0、Zを0
RotationのXを90、Yを0、Zを0
ScaleをXを0.05、Yを0.1、Zを0.05

とします。
ここでのPositionはあまり関係ありませんが、懐中電灯を作る時に他のゲームオブジェクトと重なって調整しづらくない位置に置きます。

懐中電灯にスポットライトを取りつけ調整する

子要素にスポットライトを配置する為、FlashLightゲームオブジェクトを選択した状態で右クリック→Light→SpotLightでスポットライトを作ります。

懐中電灯から光が出ているようにする

上画面のようにSpotlightのパラメータを修正し、懐中電灯(筒のオブジェクト)から光を発しているように調整します。

光の強さや照らす範囲はSpotLightのインスペクタ上で変更が可能です。

Spot Angleで照らす角度(範囲)、Intensityで光源の強さを変更出来ます。
Colorで色合いを変えると特殊な懐中電灯が出来上がります。

懐中電灯の子要素にライトを設置しているので、懐中電灯の動きに合わせて光の位置も動くようになります(子要素は親要素からの相対位置になる)。

ということは、この懐中電灯を「masasi」君の手の所へ持っていけば懐中電灯は手の動きに合わせて動くようになります。
(懐中電灯は手の子要素になるので手の動きに合わせて相対的に懐中電灯も動きます)

なんかわくわくしますねぇ!(わたくしだけ?)

キャラクターの手に懐中電灯を持たせる

それでは「masasi」君の手へ懐中電灯「FlashLight」をドラッグ&ドロップして持たせ、少し傾きや位置などを調整しましょう。

インスペクタ上で数値を指定して調整する事も出来ますが、Sceneタブにして懐中電灯オブジェクトの赤、青、緑の矢印をマウスで移動させる事でも調整出来ます。
ゲームオブジェクトの移動に関しては

Unityを起動後の画面とメニューを細かく見ていき、どこをどう使うかを学んでいきます。

を参照してください。

キャラクターが懐中電灯を持っているように位置を調整する

懐中電灯をもっと正確にキャラクターに持たせたい時は

Unityでキャラクターの手の位置に正確に武器を持たせるように調整します。なんとなく持たせる位置を設定していた人には朗報かも!?

を参照してください。

なんとなく持っている位置が決まったら、実行ボタンを押して確認してみます。

確認する際にDirectional Lightが明るすぎると懐中電灯の明かりが分かりづらいのでDirectional LightをOffにしておきます。

では、Unityの実行ボタンを押して確認してみます。

懐中電灯を持ったキャラクターの動きを確認する

見事に手の動きに合わせて懐中電灯が動き、スポットライトの光も動いています。

これで懐中電灯の作成とキャラクターに持たせる事が出来ました。

懐中電灯を持たせたキャラクターの問題点

しかしいくつかやらなければいけない事が残っています。

それはキャラクターの歩くアニメーションが懐中電灯を持って歩いているものじゃない事です。

アニメーションを作成する段階で何か握っているようにしなければなりません。

また自然なアニメーションにするには懐中電灯を前に向けて歩いているようにしたいところです。

物を持たせて歩いているのであればひとつの物を持ったアニメーションを作成すれば持っている物を変更するだけでいいので、他の物を持って歩く時も同じアニメーションで代用出来ます。

手だけを別のアニメーションにしたい場合は

体の一部分だけのアニメーションを変更したい場合はAnimatorControllerのレイヤーとアバターマスクを使う事で実現出来ます。

を参考にしてください。

懐中電灯をキャラクターの手に持たせれば後は勝手に手の動きに合わせて動いてくれるのって便利ですよね。

3Dゲームを作った事がなかった頃はどうやって武器をキャラクターの動きに合わせて持たせたらいいんだろうか?とか
考えるだけで頭がパンクしそうでしたが、実際作ってみるとこんなに簡単に持たせる事が出来るんですね!

Unityの凄さを実感しました。

スポンサーリンク

記事をシェアして頂ける方はこちら

フォローして頂くとやる気が出ます