Alpaca Time Blog

ゲーム作る系 草食動物の備忘録

【Unity】斬属性アセット特集【日本刀】

セールで日本刀を購入してテンションが上がったので、日本刀でいろいろやってみたいと思います。 

 

※この記事は、Unity公式が開催している「Unityアセット冬のアドベントカレンダー 2019 Winter」の25日目の記事です。

 

 最終的にはこのような感じです。

 

 

開発環境

Unity 2019.2.16f

Windows10 Pro

OculusRift CV1

 

武器を選ぶ 

今回の日本刀はこちらの国宝級含む10本セット。

日本のパブリッシャー様です。

クオリティがとても高く、普段見えない所も作りこまれています。

↓ポストエフェクトなしでこのクオリティ

f:id:alpacatech:20191223040828p:plain

screenshot

太刀:
三日月宗近(国宝)[tachi01]
・江雪左文字(国宝)[tachi02]
獅子王[tachi00]

打刀/脇差:
・歌仙兼定[katana00]
・石田正宗[katana01]
・勢州桑名住村正[katana02]
・骨喰藤四郎[katana03]

短刀:
・謙信景光(国宝)[tantou00]
・物吉貞宗[tantou01]

大太刀:
・太郎太刀[ootachi00]

 

 

VR化する

綺麗な刀をVRで振り回してみました

VR内でも美しい……

 

使用アセット(VRコントローラ/ 背景) 

  

Unityは、設定をするだけで実行時にVR空間で動作します。

f:id:alpacatech:20191223224210p:plain

Project SettingsのXR Setingsを設定、今回はOculusなのでOculus追加。 

 

コントローラを使うにはAsset使ったほうが簡単です。 f:id:alpacatech:20191223223943p:plain

アセットは、各コントローラのモデルが利用できます。 

コントローラは、以下を参考にさせて頂きました。

framesynthesis.jp

OVRCameraRigを配置して、RightControllerAnchorの子に刀を設置するだけ

f:id:alpacatech:20191225000518p:plain



 

 

 

エフェクト(軌跡)をつける

刀といえば軌跡エフェクト。

 使用アセット

 

www.youtube.com

X-WeaponTrail を利用しました。

f:id:alpacatech:20191225000637p:plain

X-WeaponTrailを配置し、

EndPoint ... 剣先(青球)
StartPoint ... 剣元(赤球)

を指定するだけ。 

f:id:alpacatech:20191223215557p:plain

 X-WeaponTrailのパラメータで、更新フレーム数や色、シェーダーが変更できます。

 

エフェクト(パーティクル)も試してみる

軌跡以外のパーティクルなエフェクトもかっこいいです。

VRでエフェクトを置くとどうなるのか試してみました。 

 今の所ポストエフェクトがかかっていないのでブルームが足りずやや地味ですが、VRでは迫力あります。

 

使用アセット 

  

斬撃系に特化したパーティクルエフェクト。

www.youtube.com

今回はとりあえずボタンを押すとprefab配置するようにしただけです。

 移動ベクトルの変動を見て自動的に出したい。

 

果物を斬る(メッシュカッター)

刀なので物を斬りたい。リンゴを斬ってみました。

 使用アセット

安価なメッシュカッターアセットです。

スクリプトが少し必要です。

 

 

使い方

注意:Unity 2018.3以降だと古いPostEffectがありエラーが出ました。

Assets\SimpleMeshCutter\Demo\PostProcessing\Editor\PropertyDrawers\MinDrawer.cs(6,34): error CS0104: 'MinAttribute' is an ambiguous reference between 'UnityEngine.PostProcessing.MinAttribute' and 'UnityEngine.MinAttribute'

回避策はありますが、切断するのにPostEffectは必要ないので削除して問題ありません。

f:id:alpacatech:20191225001626p:plain

手順

1. 切断する側にCutterをセット

f:id:alpacatech:20191225003241p:plain

2. 切断される側にCutterTargetをセット。切断面のマテリアルを設定できます。

f:id:alpacatech:20191225003254p:plain

3. CutterのCutメソッドを呼び出すと、Cutterの向きでCutterTargetを切断できます。

4. 切断後は、Cutter.OnCutted に追加されたメソッドが呼び出されます。

_cutter.OnCutted += OnCuttedHandler;

 

ちょっとわかりにくい?

Assets/SimpleMeshCutter/Demo/Scenes/MeshCutSample と CutterTest.cs  が参考になります。

 

VRの刀では、 

  • 刀にCutterとCollider、果物にCutterTargetとCollisionとRigidbodyを追加。
  • OnTriggerEnterで、果物に対してCutメソッドを呼び出し
  • 切断後コールバック関数(OnCuttedHandler)では、それぞれのオブジェクトにRigidbodyをAddComponentしています。(切断後のメッシュオブジェクトは新規で作られるのでRigidbodyが無い)

という実装方法を行いました。

切断後のオブジェクトにCutterTargetをAddComponentすると無限に切断できます。

 

 

以上です。

 

ゲームを作ろうと思っていたのですが時間が捻出できませんでした。

そのうち作りたいです。(OculusQuestが届かない><) 

 

 

おまけ:アセットまとめ

武器

クオリティ高い刀をあつめました。脇差単体なら無料

 

 

背景

スケールがちょっと小さいような気がするので、畳の幅を90cm前後として考て1.8倍ぐらいに拡大して使いました。

  

軌跡

 

  背景ゆがみエフェクトもできます。

www.youtube.com

3D斬撃エフェクト

 

 

2Dゲーム向きの斬撃・打撃エフェクト

今回利用していませんが、2D向けの斬りや打撃のエフェクトです。スプライトアニメよりも派手になります。

 

メッシュカッター

 

 スクリプトが必要ですがローコストでメッシュ切断導入できました。

 

  果物

 

 VRならローポリが優しいですね。

 

 

何か斬る関連のアセットがあったら追加していきます。 

ありがとうございました。