0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

謎の力を棒に与えたかった

0
Posted at

抽象的な表現で申し訳ないのですが、棒に謎の力を与える必要がありました。
メモ代わりに使わせていただきます。

Image from Gyazo

  • アンカーポイントの変更
  • 角度を求めて代入

アンカーポイントの変更

Unityでは基本的にGameObjectの真ん中にセンターが来るようにデザインされています。
今回は物体の端にアンカーポイントを置きたかったので、空のGameObjectを配置して、以下のスクリプトをアタッチ。


public class Gizmo : MonoBehaviour
{
   public float gizmoSize = 0.1f;
	public Color gizmoColor = Color.yellow;

	void OnDrawGizmos()
	{
		Gizmos.color = gizmoColor;
		Gizmos.DrawWireSphere (transform.position, gizmoSize);
	}
}

ヒエラルキーの方は、空のゲームオブジェクトの下に置きたいオブジェクトを配置します。
Image from Gyazo

こちらの記事を参考(というかほぼそのまま)利用させていただきました。

角度を求めて代入

原点はわかっていたので、だいたいこのへんから取ろうと決めた座標を使って角度を求めました。


float rad = Mathf.Atan2(modelpos.y,modelpos.x);
float moveY = 90 - rad * Mathf.Rad2Deg;

上記の参考はこちらの記事をを利用させていただきました。

このときに、GameObjectが何でも良いように、


[SerializeField]GameObject targetmodel;

上記のように宣言して、参照元が何でも良いようにUnityでフィールドを見れるようにしました。

Quautanionのりお会が全く追いつかなかったため、今回は Quaternion.Euler を使って値を代入しています。


gizmo.transform.rotation = Quaternion.Euler(2.61f,-7.06f,moveY/2);

rotationは、Quaternionを代入せねばいけませんが、上記のように雑にVector3みたいなのが代入ができるので便利です。
教えていただいたのはLookAt()関数でしたが、今回は使用しませんでした。

以上メモでした。

もっとこうすれば簡単だよ!ということがありましたら教えていただけると幸いです。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?