2014年7月21日月曜日

【Unity】戦車ゲーム:回転の制限ができない


 WoTよろしく砲塔の動きに照準が追随するようにした(ここでプレイできる)。いま砲塔の回転はQuaternion.Slerpを使っていて、これは砲塔をスムースに回転させてくれるのだけども、困ったことにx,y,z軸まわり見境なく着弾地点を指向するので、砲塔と車体の動きがばらばらになってしまう。車体のY軸まわりの回転のみ可能にするのは簡単そうに見えて結局できなかった。もちろん他の方法はある。例えば常に砲塔の目的の角度と現在の角度を監視して、Rotateで回転を指示する方法だ。これなら回転軸を固定できる。しかしあまりかっこよくない。

2 件のコメント:

くうれい さんのコメント...

はじめまして。
現在、私が制作しているゲームにおいて似ている挙動の実装で詰まっています。

照準を画面上へと表示する際のプログラムをもう少し詳しく教えていただけないでしょうか。
自分なりに調べましたがイマイチつかめませんでしたので。。。

カノコガ/kanokoga さんのコメント...

砲身から弾道方向にレイを照射し、ヒットした座標(x,y,z)をスクリーン座標(x,y)に変換して(aimPosScreen = mainCamera.camera.WorldToScreenPoint(hit.point);)あとはRectで照準のGUITextureの位置を更新すれば出来ますね(aim.guiTexture.pixelInset = new Rect(aimPosScreen.x - Screen.width/2 -25, aimPosScreen.y - Screen.height/2 - 25, 50, 50);)