unity開発メモ帳

Unityゲーム開発です

2Dで懐中電灯のようなライトを表現する

はじめに

2Dゲームで懐中電灯のようなライトを表現してみたかったのでやってみました。

 

私の力量不足で詳しい説明には至りませんでしたが、ご了承ください。

 

 

 

 

内部コード

playerTransformに、ライトを持たせたいオブジェクトのTransformをアタッチしてください

meshFilterに、自身にアタッチされているMeshFilterをアタッチしてください。

 

(事前にオブジェクトにはMeshFilterと、MeshRendererをアタッチしておいてください)

 

gistfb3ed34426f8975e2f0aa21141749b4d

 

おおまかな実装の方針

 

1,rayを飛ばす

rayをプレイヤーの向いている方向を中心として、扇状に複数飛ばします。

 

2,Meshの説明

Meshと呼ばれる機能を利用します。

Meshには、「頂点の位置の設定」と、「どの頂点が一つの三角形の頂点の組であるか」の設定が必要です。

 

以下のページの説明が分かりやすかったです。

http://web.wakayama-u.ac.jp/~tokoi/unity_mesh.pdf

3,rayとMeshの利用

飛ばした複数のrayを走査します。

障害物にrayが当たったときは、その当たった位置を頂点とします。
一方で、障害物にrayが当っていないときはrayの先端を頂点とします。

また、すべての三角形は、「プレイヤーの位置」を一つの頂点として持っています。

 

これらの「頂点の位置」そして「三角形を成す頂点の組み合わせ」の情報をmeshに毎フレーム代入することで、動的にmeshを変形させることができます。

 

終わりに

お疲れ様でした。

実装について詳しく説明することができなかったのは申し訳ないです、、

 

今回のような「課題と解決」も今後は紹介していければと思っています。

 

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

 

 

2023/06/13 : 不具合の調整