【发布时间】:2017-05-13 23:30:43
【问题描述】:
我目前正在开发一款在 Unity 中使用点击移动的游戏。当我点击地图上的一个点时,我将鼠标点击设置为目标,然后使用游戏对象上的刚体通过 RigidBody.MovePosition() 移动它。当我这样做时,当游戏对象到达目的地时,我会得到很多闪烁。任何帮助表示赞赏。谢谢。
// 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);
}
}
【问题讨论】:
-
您的目的地是一个点。所以很难达到确切相同的位置。当您的目的地离您的对象非常非常近时,您应该添加一些代码来管理案例。
-
谢谢。这对我有用。简单易修复。非常感谢。
标签: c# unity3d unity5 rigid-bodies