【Unity, Teddy, 3Dモデリング】カメラを回転したときのオブジェクト生成位置のずれを解消

投稿者: | 2018年11月1日

前回の記事

【Teddy】ゲーム実行中に好きな色の3Dモデルを作製する方法

フィア
カレン~、カメラを移動させたり向きを変えると、

手で描いたオブジェクトの出現場所が、なぜかずれるの…

カレン
う~ん、生成位置が絶対座標なのかなぁ

もしかしたら、Prefabの方も調節が必要かもね

フィア
もしかして…またスクリプトいじるの…?
カレン
もちろん♪
フィア
うぅ…

 

 

カメラの向きによるオブジェクト生成位置のずれ

Main Camera の位置をネズミを軸にして反転させてからオブジェクトを生成すると、y軸を対称にして反対側にオブジェクトが出現します。

 

手書きのオブジェクトはTeddy/TeddyRuntimeDemo/Prefabs内のPuppetという空オブジェクトにメッシュを取り付ける形で生成しております。

PuppetはPosition、Rotation共に(0,0,0)です。これをカメラの向きを180°反転させて生成すると、

Rotationが(x, y, z) = (0, -180, 0)となっていることが分かります。

 

 

 

 

 

 

 

 

ここでTeddyRuntimeDemoに入っているスクリプトのTeddyRuntimeDemo.csを見てみると、Create()メソッド内にgo.transform.rotation = camera.transform.rotation; という記述がありました。

go は生成したオブジェクト(Puppet)を指しており、goのRotationをCameraのRotationと同じにする、といったものです。

これによりPuppetのRotateが変化しておりました。

一見問題なさそうですが、たぶんスクリーン座標とワールド座標の兼ね合いで不具合が起きているのでしょう。

これをダブルスラッシュで無視すると以下のようになります。

これでカメラの180°回転状態の問題については解消できました。しかしながら、あと二つ問題が残ってます。

 

 

カメラを90°回転させたとき

カメラを90°回転させると、円の中にオブジェクトが現れません。実際には、厚みの無いペラペラのオブジェクトが生成されております。なので、横からでも3Dオブジェクトを生成できるようにする必要があります。

 

 

カメラを移動してもPuppetの出現位置が変わらない

カメラを移動させてもPuppetの生成位置が変わらないので、右下のGame ビューのように、手書きの円と生成したPuppetの位置が大きくずれる結果となりました。

このあたりも、相対座標を組み込んで修正する必要があります。

 

 

まとめ

・カメラを180°回転したときの3Dオブジェクト生成位置のずれを解消できた。

フィア
とりあえず一歩前進って感じだねーっ
カレン
まぁ、座標だけの問題ならなんとかなりそうかな?
フィア
次回もお楽しみにっ!

 

 

Teddyの詳細を見たい方

こちらのリンクよりUnity Asset Storeへ飛ぶことができます。

 

 

Amazon Audible| 有名声優が朗読!おすすめライトノベルとドラマCD

【LINEスタンプ作成】SNSを活用した現実的な売り方と収入

【Unity, Teddy, 3Dモデリング】カメラを回転したときのオブジェクト生成位置のずれを解消」への1件のフィードバック

  1. ピンバック: 【Unity, Teddy】カメラを移動したときのオブジェクト生成位置のずれを解消 | すくまりゲームズ

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください