抽象的な表現で申し訳ないのですが、棒に謎の力を与える必要がありました。
メモ代わりに使わせていただきます。
- アンカーポイントの変更
- 角度を求めて代入
アンカーポイントの変更
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);
}
}
ヒエラルキーの方は、空のゲームオブジェクトの下に置きたいオブジェクトを配置します。

こちらの記事を参考(というかほぼそのまま)利用させていただきました。
角度を求めて代入
原点はわかっていたので、だいたいこのへんから取ろうと決めた座標を使って角度を求めました。
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()関数でしたが、今回は使用しませんでした。
以上メモでした。
もっとこうすれば簡単だよ!ということがありましたら教えていただけると幸いです。
