【发布时间】:2021-12-26 19:04:14
【问题描述】:
我试图弄清楚如何让我的播放器在到达某个位置时停止,但似乎没有任何效果。我想要的是当游戏对象到达某个位置时游戏对象会突然停止移动。我正在向 RigidBody2d 施加力,因此游戏对象会移动并均匀减速,但我希望它在到达某个位置时停止。我正在尝试将此作为边界限制。我还尝试仅使用 collider2D 作为边界,但游戏对象仍然向右移动并抛出它,并且 collider2D 未设置为触发器。这是一款手机游戏,所以我使用的是触摸屏。
这就是我所拥有的。
private void Update()
{
MovePlayer();
}
private void MovePlayer()
{
if (Touchscreen.current.primaryTouch.press.isPressed)
{
Vector2 touchPosition = Touchscreen.current.primaryTouch.position.ReadValue();
Vector3 worldPosition = mainCamera.ScreenToWorldPoint(touchPosition);
moveDirection = worldPosition - transform.position;
moveDirection.z = 0f;
moveDirection.Normalize();
}
else
{
moveDirection = Vector3.zero;
}
private void FixedUpdate()
{
if (moveDirection == Vector3.zero) { return; }
rb.AddForce(moveDirection * movementForce * Time.deltaTime, ForceMode2D.Force);
rb.velocity = Vector3.ClampMagnitude(rb.velocity, velocity);
if (transform.position.y >= 4f)
{
rb.velocity = Vector2.zero;
}
}
【问题讨论】:
标签: c# unity3d gameobject