前提・実現したいこと
Unity3Dで、ゲームのステージの周りに円柱状の見えない壁のようなものを設置したい。
そのために、Cylinderのメッシュを反転してMeshColiderに使いたい。
発生している問題・エラーメッセージ
エディタで実行する上ではうまく反転されているのですが、ビルドしたものではなぜかmeshが反転されていません。
試したこと
空のゲームオブジェクトにMeshColiderをアタッチし、meshにはCylinderを設定しました。そして、以下のスクリプトをアタッチしました。
c#
1using System.Collections; 2using System.Collections.Generic; 3using System.Linq; 4using UnityEngine; 5 6public class ColiderRevercer : MonoBehaviour 7{ 8 public static bool isnotReversed = true; 9 10 void Start() 11 { 12 if (isnotReversed) 13 { 14 Mesh mesh = GetComponent<MeshCollider>().sharedMesh; 15 mesh.triangles = mesh.triangles.Reverse().ToArray(); 16 isnotReversed = false; 17 } 18 } 19} 20
これで何度か試してみたところ、一度実行するとゲームモードを終了してもmeshの反転は残る(実行するたびに裏→表→裏→…と実行結果が変わる)ということが分かりました。そのため上記のスクリプトをアタッチして一度だけ実行し、その後スクリプトを消して反転させないようにしたところ、ゲームモードで実行する上では目的の通りにずっと反転したままになりました。
しかし、これを実際にビルドしてみると、meshは反転されておらず元のままになっていました。エディタのゲームモードではちゃんと反転されたままです。
CylinderはUnityに標準搭載されているメッシュなので、それが何かしら問題を起こしている(ビルド時に反転がリセットされるなど)可能性を疑い、反転用のスクリプトを消さずに残したままでビルドしてみましたが、変わらず反転されていませんでした。原因が全く分からず困っています。
Unity初心者ですので、教えていただけると大変助かります。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/07/15 11:48