2016-08-07 15 views
0

私は、GameObjectにクォッドMeshFilterを持っています。デフォルトでは次元1x1ですが、スケールを設定することでサイズを変更できますが、スケールの変更に対して子要素のサイズも変更されます。私はそれにRectTransformを与えようとしましたが、幅と高さを変更してもサイズは変わっていません。通常のTransformコンポーネントには幅や高さのコントロールはありません。ユニティのメッシュの寸法を設定する

すべての子要素を拡大せずにUnityでメッシュのサイズを設定するにはどうすればよいですか?

+0

あなたがサイズを変更したくないゲームオブジェクト子の画像をアップロードしたいですか?これは解決策を思いつくために役立ちます... – Programmer

+0

あなたの子オブジェクト(親から変換する必要はありません)は何ですか?あなたはいくつかのスケールが必要といくつかの必要がありますか? –

答えて

0

Unityは、アプリケーションの外部で作成されたアセットとして、メッシュや画像、サウンドを扱います。もちろん、Unityでは3Dモデルを移動、拡大縮小、回転することができますが、これは非常に基本的な3Dモデリング機能であり、3Dモデルを正しく編集することはできません。個人的には、スケールされた立方体で作られた荒いプロトタイプでのみ十分だと思います。

あなたはこれらの資産を変更したいのであれば、次のことができます。

  1. は、独立したアプリケーションを開きます(Blenderは、3Dモデルのためにマックス、マヤ3DS)して、必要なメッシュを作成します。これはおそらくあなたが望む解決策です。

  2. 実行時にMesh objectを変更するスクリプトを作成します。それはいくつかの問題のための良い解決策ですが、おそらくあなたが探しているものではありません。

  3. ProBuilderのように、3Dモデリング機能をUnityにもたらすサードパーティのパッケージを使用してください。私はそれを使用しておらず、推薦ではないことに注意してください - 私はこの代替案が存在することを示しています。

0

あなたがそれをカルクする必要があります:)

  1. は、レンダリングコンポーネントから現在の境界を取ります。これはシーン上の実際のオブジェクトサイズです。
  2. 予想範囲の新しいスケールを計算します。一例として

あなたは

actualBounds.xは、すべての次元で100

規模が1である持っています。

var expectedBoundX = 150 

var newScaleX = expectedBoundX/(actualBounds.x/scaleX); 

とちょうどXスケールにこのnewScaleXを設定した後:)

関連する問題