懐かしきビリビリマンタ

こんにちは。初投稿です。

スーパーマリオが2015/09/13で30周年を迎えたそうです。

(いつまでかはわからないですが、Googleでスーパーマリオブラザーズと検索するとハテナブロックを叩けます)

そこで、昔ゲームを始めた初心に帰って、懐かしきゲームキューブ時代の某名作のマンタをUnityで作ってみました。

 

参考はここです。
まずマンタの絵を描きます。

manta

これを適当なPlaneに張り付けます(マテリアルのRendering ModeはFade)。

それから、スクリプトを書いてこれをこのPlaneにアタッチします。以下、スクリプトの一部。

Vector3[] newVertices = new Vector3[vertices_.Length];
for (int i = 0; i < vertices_.Length; ++i) {
Vector3 worldVertex = GetComponent<MeshFilter>().transform.localToWorldMatrix.MultiplyPoint(vertices_[i]);
worldVertex.y = 1000;

RaycastHit raycastHit;

// 落ちてくる水のtagを”Player”にしてそこに頂点が移動しないようにしている
if (Physics.Raycast(worldVertex, Vector3.down, out raycastHit) && raycastHit.collider.gameObject.tag != “Player”) {
worldVertex.y = raycastHit.point.y + 0.7f;
}
else {
worldVertex.y = 0;
}
newVertices[i] = GetComponent<MeshFilter>().transform.worldToLocalMatrix.MultiplyPoint(worldVertex);
}
vertices_ = newVertices;

つまり、上空から光線を飛ばして何かに当たったら、そこに頂点を移動させるだけです。

あとは、適当に標準アセットの水を置いたり、夕焼けにしたり、マリオのポンプの水を落としたり…。

遊ぶ

Posted on