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?

1476 Posts | Page 1/246
km
そうでしたか…確かに、非常に難しそうですね。それは残念ですが、わかりやすい理由をつけたうえで回答してくださり有難うございます。
気球から風景を眺め楽しめたり(鉄道どっかにないかなぁ…)、どこをあるいても飽きないなど、(歩き方が一方向になりがちな)最近のゲームとは真逆の方向を行く面白さを持つ点でこのゲームは唯一無二の存在だと思います。
(大穴で本命の開発再開を待ち望みながらも)いつか終わる時のために録画しつつのんびり楽しませて頂こうと思います。
再度になりますが、ご回答ありがとうございました。
SmokymonkeyS
そう言われるとつくった甲斐があります、ありがとうございます。
オンラインとオフラインゲームは根っこからまったく別の設計となっているので、残念ながらそういう切替はとても難しいのです。サーバは当面なくなることはないのでどうぞご安心を。
km
Ninelivesがとても好きで、今でも遊び続けているのですが、オフラインでも遊べるような仕様にする予定などはございませんでしょうか。
勿論これからもゲームサーバ運営を継続して下さることに勝るものはないのですが、いつか遊べなくなるとうのは寂しいものです。運営が終わってしまうまでに全クリできる自信がありません。
ステージを歩き回るだけでも楽しいゲームなので、仮にゲームサーバ運営ができなくなっても遊べるような仕様をいつか用意して下さると嬉しいです。
Harry Siu
Continue the story of the eastern land in triglav!!!!!
のうねいむ
おかげさまでプレイできました、嬉しいです!ありがとうございます!
SmokymonkeyS
Ninelivesのアカウント申請メールサーバが正常に動作していなかった問題を修正しました。もう一度試してみてください。
ゲーム本体も久しぶりに更新しましたのでお楽しみください。

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.