私のオブジェクトが目標の方向に永遠に移動し続けるように、または衝突するまで、衝突部分はすでに処理しています。しかし、私は動きの部分に問題があります。衝突までオブジェクトを変換する
私が最初にこれは完璧に動作し、私のオブジェクトは、私はそれがしたい方向に回転するコード
Vector2 diff = target - transform.position;
float angle = Mathf.Atan2(diff.y, diff.x) * Mathf.Rad2Deg;
transform.rotation = Quaternion.Euler(0.0f, 0.0f, angle);
のこれらの行を使用して、私のターゲットを回転させるようにしてみてください。私は
if (isMoving)
{
Vector2 f = transform.forward;
transform.position = Vector3.MoveTowards(transform.position, target + Vector3.forward, speed * Time.deltaTime);
}
を以下している私のUpdateメソッドで は今、これは動作しますが、目標を達成するために失敗し、私は、それが理にかなっている理由を知っているが、それを修正する方法がわかりません。オブジェクトは正しい方向にポイントに移動しますが、ターゲットで停止しないようにしたいので、そのまま続けてください。
私はまた、Rbがrigidbody2D
など
rb.AddForce(rb.position + f * Time.deltaTime * speed);
しかし、いずれの場合も、オブジェクトの回転であるが、私はまた、変換に使用
を移動したことがない
rb.MovePosition(rb.position + f * Time.deltaTime * speed);
を試してみましたMovePositionと同じ動作
P.S.それは2Dゲームです
更新、衝突トリガなどのコードを投稿してください。 – Isma
@Ismaありがとうございました。私は線方程式を使用して解決できました。あなたがそのアプローチを見たいと思ったら私の質問に答えました。 –