2017-11-22 7 views
0

私は最近、インポートされたobjファイルで作業しています。Unity transform.positionオブジェクトのオブジェクトのための常に(0、0、0)obj import

エディタにインポートすると、すべてのオブジェクトが正しい位置に表示されますが、位置は(0、0、0)です。

オブジェクトをループしてファイルにtransform.positionを書き込むたびに、各オブジェクトは(0、0、0)として設定されます。

私は同じ結果を返した親オブジェクトtransformPositionを使用しました。

どのような考えにも感謝します。

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

編集:ちょうど尋ねられました。問題は、すべてを0に戻すべきではなく、世界中にあるということです。

rangeObjs = GameObject.Find("firing_range").GetComponentsInChildren<MeshFilter>(); 
for(int i = 0; i < rangeObjs.Length; i++){ 
    Debug.Log(rangeObjs[i].transform.position.ToString()); 
} 
+1

の同じ位置にある保証するものではありません。あなたの問題は何ですか? – Draco18s

+0

@ Draco18sすべてが0、0、0であるべきではありません。それらはすべて異なる場所にあります。 – CBusBus

+0

@CBusBusあなたのコードを表示できますか? シーン内でどうなっているかのスクリーンショット –

答えて

1

これはモデルピボットがルートトランスフォームの中心に変形しているようです。

これは、どちらかあなたのモデルが間違ったピボットを持っているか、これはルートにすべてのピボット変換団結内のバグである(0,0,0)

、ブレンダーのような他の3DモデリングソフトであなたのOBJを開いてご覧ください。ピボットがゼロの位置にある場合。

3Dモデリングソフトウェアでピボットを固定してください。

そうでない場合は、別の形式(FBXなど)にエクスポートしてユニティに戻してみてください。

しかし、あなたはトリッキーな方法をしたい場合。 MeshFilter GameObjectを、正しいピボット位置を持つ親の子にすることができます。空のGameObjectを作成して、新しいピボットを作成することができます。

EDIT

はまた、ユニティ・エディタで確認し、それにMeshFilterを持っているあなたの子オブジェクトを選択し、インスペクタでオブジェクトの位置を参照してください。

異なるバウンド場所がピボットがそこにあるものではありません、メッシュがどこか別の場所かもしれないが、それはピボットは素晴らしい、[OK]をメッシュ

+0

お返事ありがとうございます。エディタには同じゼロ値が表示されるので、ピボットポイントについて正しく考える必要があります。新しいモデルを作成せずにこれを解決できる方法はありますか? – CBusBus

+0

_ "しかし、厄介なやり方が必要な場合は、MeshFilter GameObjectを正しいピボット位置を持つ親の子にすることができます。空のGameObjectを作成して新しいピボットを作成することができます。_ * * STEP ** ゲームオブジェクトのルートを右クリックし、空の作成 を選択して、それをあなたのMeshFilterに対応する正しい位置に配置し、あなたの新しい空のゲームオブジェクトのメッシュフィルターゲームオブジェクトの子をドラッグして空にドロップしますgameObject。 –

+0

とループコードはこのようになります ' rangeObjs = GameObject.Find( "firing_range")。 foreach(rangeObjのTransform t) { Debug.Log(t.position); } –

0

あなたは、オブジェクトのlocalPositionをチェックしようとしましたか? (オブジェクトの位置とは対照的に)?

foreach(Transform t in group){ 
    print(t.position) 
} 

使用;

foreach(Transform t in group){ 
    print(t.localPosition) 
} 
+0

親からLocalPositionとTransformPointを試しました。どちらも結果が異なっていませんでした。 – CBusBus

+0

hmmm ...あなたのコードを見ることができるようになったので、GameObject.Find( "firing_range")の子どもの**変形**の位置をチェックしてはいけません。実際の子変換自体ではなく、それぞれのMeshFilterコンポーネントの位置を確認しているようです。 – gts101

+0

GameObjectについてもチェックしましたが、これは私がチェックした最後のものです。申し訳ありませんが、私は位置、localPositionとTransformPoint(位置)をチェックしています。 – CBusBus

関連する問題