2010-01-18 22:30:48 | Querbok
UnityのTerrain機能は便利で強力だがHeightMapなので、横穴を開けることができない。
Unity Wikiにも穴が開いているように見えるマスク処理が紹介されているが、穴の向こうに表示したいものは専用のshaderを使用しないといけないという制限があるので、シンプルなものにしか使えない。特にTPSで装備などで自キャラの構成も複雑だと簡単に切り替えるというわけにもいかない。そんなわけで、できるだけshaderの制約を受けない方式で作ってみた。


Terrainのメッシュ自体をいじって穴を開けることはできないので、穴を開けたい場所にメッシュを置いて、その部分だけTerrainを除いてレンダーしたものを貼りつけちゃおうというもの。
穴の通過を考えると、Terrainとの間に隙間があるとノイズとなるので、できるだけ密着するメッシュが必要になる。そこでまずTerrainデータから自動でメッシュを吸い出す機能から。

指定Terrainとこのスクリプトが入ったオブジェクトに隣接する箇所を起点に、Terrainメッシュの一部を複製する処理。
TerrainPoly.js


次にメッシュにカメラマトリクスで投影描画する処理。
LayerFilteringController.js (update 2010/11/06)


透過部分のレンダー時に、Terrainをレイヤー的にレンダー対象から省くことで透明化するので、
あらかじめ対象のTerrainを専用のレイヤーに(「terrain」Layerなどを作って)設定しておく必要がある。それをLayerFilteringController > renderingLayers設定から選択を外す。このメッシュ自体もIgnore Raycastなどに設定しておき、レンダー対象から外しておく。あとは対象のTerrainをTerrainPolyに設定。


穴を覆うようにメッシュを配置


あくまで向こう側が描画されているだけでTerrainのColliderは有効なままなので、このままだと通過はできない。以下の様に貫通する形でColliderを設置してやり、OnTriggerEnter時にPhysics.IgnoreCollisionを使って対象とTerrainの当たり判定を一時的に無効化し、OnTriggerExitで戻してやれば、通過が可能になる。(TPSでカメラの遮蔽物よけ処理がある場合はそれらのチェックも一時的に無効化が必要。)通過時はTerrainは床として使えないので代わりとなる床が必要。


 

Any Comment?

1485 Posts | Page 1/248
moodirun
meh this game really isnt that good please go back to working on NineLives
kenlee
Sorry,my bad. You are right.It's work fine on my other computer.
SmokymonkeyS
It's fine for me. Maybe your pc is too old to play or has no graphic card?
kenlee
And I can only see Pic Ranger/Utal at Ashrun.

Pict Warrior/Pict Guard/Pict Shaman are disappear.

kenlee
I download Ninelives Game Version 0.24.3 and play.
I found the monsters in Sunken Ruins are "invisible"
They can block my way and I can't kill they

SmokymonkeyS
Well, it requires Triglav 2 for the reason of game pack size :P Happy to hear that anyway.

About   

SmokymonkeySとは、2名のアマチュアによって結成されたユニットです。 ゲームやその他作品を無所属で個人開発しています。
2002年 WebゲームTRIGLAVを公開。 現在も稼動中で総勢50万アカウントを超える長寿ゲーム。
2015年 3DアクションRPG Ninelivesを公開。現在開発休止中。
2017年 プロジェクト「Modoki」開始。
2018年 モバイル版 TRIGLAVリリース。

SmokymonkeyS is a two-man indie team by a programmer and a graphic designer, formed for creating games.
Our 1st game TRIGLAV, a web RPG that has been made with JavaScript has made over half a million accounts since it launched 2002.
On 2015, our 2nd game Ninelives suspended the development at Alpha stage.
On 2017, started to launch the new project called Modoki.
On 2018, Triglav for Mobile releasing.