懐かしきビリビリマンタ
こんにちは。初投稿です。
スーパーマリオが2015/09/13で30周年を迎えたそうです。
(いつまでかはわからないですが、Googleでスーパーマリオブラザーズと検索するとハテナブロックを叩けます)
そこで、昔ゲームを始めた初心に帰って、懐かしきゲームキューブ時代の某名作のマンタをUnityで作ってみました。
参考はここです。
まずマンタの絵を描きます。
これを適当な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: 2015年9月17日, by : TRSasasusu