私は現在Unityで移動するためにクリックを使用しているゲームに取り組んでいます。マップ上の地点をクリックすると、そのマウスのクリックを目的地に設定してから、ゲームオブジェクトのrigidBodyを使用してRigidBody.MovePosition()を使用して移動します。私がこれをすると、ゲームオブジェクトが目的地に到達すると、ちらつきが増えています。いかなる援助も感謝します。ありがとう。速度ベースの動作を使用するときのポイントに達するUnity3D RigidBody MovePosition Flicker
// COMPONENTS
Rigidbody rigidBody;
// MOVEMENT
Vector3 destination;
Vector3 direction;
// Use this for initialization
void Start()
{
rigidBody = GetComponent<Rigidbody>();
destination = transform.position;
}
// Update is called once per frame
void Update()
{
DetectInput();
}
void FixedUpdate()
{
MoveControlledPlayer();
}
void MoveControlledPlayer()
{
transform.LookAt(destination);
Vector3 direction = (destination - transform.position).normalized;
rigidBody.MovePosition(transform.position + direction * 5 * Time.deltaTime);
}
void DetectInput()
{
if (Input.GetMouseButton(0))
{
SetDestination();
}
}
void SetDestination()
{
if (!EventSystem.current.IsPointerOverGameObject())
{
Plane field = new Plane(Vector3.up, transform.position);
Ray ray;
float point = 0;
ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (field.Raycast(ray, out point))
destination = ray.GetPoint(point);
}
}
宛先はポイントです。したがって、* exact *同じ位置に到達することは難しいです。あなたの目的地が本当にあなたのオブジェクトから本当に近いときに、ケースを管理するいくつかのコードを追加する必要があります。 – Greg
ありがとうございます。それは私のために働いた。シンプルで簡単な修正。とても有難い。 – user3623692