【UnityC#講座】無料アセットで一人称視点に剣を振らせる


Unity2018.1.5f1
Windows10

一人称移動剣/トップ

Terrainのアセットを試した時など、少しマップを歩き回りたいという時に気軽に利用できる一人称視点で動くスクリプトを書きました。
3D ObjectのCapsuleにアタッチするだけで気軽に利用できます。
そしてついでにAnimationで剣を振る動作を作ったので紹介します。

■一人称視点で移動する

まずはCapsuleを出します。

Hierarchy > Create > 3D Object > Capsule

次に以下のスクリプトをCapsuleにアタッチします。

WASD、または上下左右キーで移動します。
左右どちらかのShiftを押すと速く移動し高くジャンプをします。
マウスでCameraの向きを変えます。

一人称移動剣/移動・ジャンプ・Shiftダッシュ

移動するだけならこれで終わりです。

ちなみにCaracterComponentはどのくらいの角度の坂を上れるようにするか、どのくらいの高さの段差・階段を上れるようにするかを設定できる便利なコンポーネントです。

■剣を振るアニメーションを作る

剣を用意する

Animationウィンドウで剣を振るアニメーションクリップを作り、Animationコンポーネントでゲーム再生中に再生します。
まずは剣を用意しますが、今回は以前の記事で使ったものをPrefab化して使用しました。

【UnityC#講座】無料アセットでユニティちゃんに剣を振らせる

先ほどはスクリプトでCameraを子オブジェクトにしていましたが、分かりやすくするために手動でCapsuleの子にし、さらにそのCameraの子にPrefabのMedieval Swardを置いてください。

一人称移動剣/Medieval Swardを子の子に

位置をちょうど良いように置きましょう。

一人称移動剣/位置を合わせる/Gameビュー

一人称移動剣/位置を合わせる/Transform

Animationウィンドウを開く

次にAnimationウィンドウを開きましょう。

Window > Animation

一人称移動剣/Window srcset= Animation” width=”300″ height=”235″>

これがAnimationウィンドウです。

一人称移動剣/Animationウィンドウ

アニメーションを作りたいオブジェクトはHierarchyから選びます。
選んだらCreateをクリックしてファイルを保存しましょう。
今回は通常時のNormalSwordと剣を振るSwingSwordの2つを作ります。

スポンサーリンク

NormalSwordを作る

赤丸を押すとTransformを動かすだけで記録されます。
そのひし形のものをキーフレームと言います。

一人称移動剣/Animationウィンドウ/赤丸録画

目盛りがついている欄でTransformの値を記録する場所を決める線、再生ヘッドをドラッグできます。

一人称移動剣/Animationウィンドウ/再生ヘッド動かせる

今回は最初の位置から30秒かけてY軸で下がり、そして60秒目で元の位置に戻ります。

一人称移動剣/Animationウィンドウ/NormalSword/タイムライン

0秒と60秒のTransform。
角度は変えないのですが、キーフレームを作っておかないと角度がおかしくなるのでRotationの適当に数値を変えて記録しておいてください。

一人称移動剣/Animationウィンドウ/NormalSword/タイムライン/最初と最後

30秒のTransform。
こちらも同じようにRotationのキーフレームを作ってください。

一人称移動剣/Animationウィンドウ/NormalSword/タイムライン/真ん中

さてアニメーションを再生してみましょう。
再生ボタンを押してください。

一人称移動剣/Animationウィンドウ/NormalSword/再生ボタン

結果はこうなります。

一人称移動剣/Animationウィンドウ/NormalSword

ちなみにキーフレームは動かせますので楽に再生時間を詰めたり伸ばせたりできます。

一人称移動剣/Animationウィンドウ/キーフレーム動かせる

最後にNormalSwordは待機状態に出るアニメーションなのでループするようにしましょう。
AssetsのNormalSwordのアイコンをクリックし、

一人称移動剣/アニメーションクリップ/NormalSwordアイコン

InspectorからWrap ModeをLoopに設定します。

一人称移動剣/アニメーションクリップ/NormalSwordアイコン/Wrap Mode/Loop

SwingSwordを作る

下の画像のCreate New ClipをクリックしてSwingSwordを作りましょう。

一人称移動剣/Animationウィンドウ/Create New Clip

今回は大上段から振り下ろすような形にし、PositionとRotationを変更します。

一人称移動剣/Animationウィンドウ/SwingSword/タイムライン

0秒

一人称移動剣/Animationウィンドウ/SwingSword/最初

10秒

一人称移動剣/Animationウィンドウ/SwingSword/真ん中

20秒

一人称移動剣/Animationウィンドウ/SwingSword/終わり

それでこのようになります。

一人称移動剣/SwingSword

さて、Medieval SwardのAnimationコンポーネントはこのようになっているでしょうか。
なっていなければセットしてください。

一人称移動剣/Medieval Sward/Animation

UseSwordスクリプトを書く

次はMedieval Swardにアタッチするスクリプトを書きます。
今回はCapsuleColliderコンポーネントのオンオフもするのでMedieval Swardに追加していなければ追加しておいてください。

アニメーションイベントの設定

スクリプトをアタッチしてもまだ終わりではありません。
左クリックで再生されたSwingSwordが終わったらNormalSwordに戻り、CapsuleColliderのオンオフされるようにします。

再びSwingSwordのAnimationウィンドウに戻ってください。
Add Eventボタンをクリックすることでアニメーションイベントが追加されます。

一人称移動剣/Animationウィンドウ/SwingSword/アニメーションイベント

最初と最後から少し手前に追加します。
一番最後にアニメーションイベントを追加したら作動しませんでした。

一人称移動剣/Animationウィンドウ/SwingSword/アニメーションイベント全体

それらをクリックしInspectorからスクリプトの関数を設定します。
初めの方はSwingStart()。
終わりの方はSwingEnd()をセットします。

一人称移動剣/SwingSword/アニメーションイベント/Function

これで完成です。

一人称移動剣/完成

お疲れ様でした。

■今回使用した無料アセット

■関連記事

【UnityC#講座】一番簡単な階段の作り方と上り方

【UnityC#講座】Render Textureでゲーム内にディスプレイを作る、Lens Flareで太陽を作る

【UnityC#講座】ボタン押す時間でジャンプの距離変わるようにした

【Unity】SetBoolでNull???【エラー】

【UnityC#講座】ユニティちゃんにパンチさせる

スポンサーリンク

目次に戻る