Unity - 让角色走向 touch/drag 位置?在 3D 中 space?
Unity - make character walk towards touch/drag position? In 3D space?
好的,我有一个为 iOS 构建的 3D Unity 游戏,将在其中实现这些控件(以第一人称射击方式):
- 镜头紧跟在角色后面
- 将手指保持在屏幕上会使角色行走,手指向上会使它停止
- 这就是问题所在:无论用户开始触摸屏幕的哪个位置,无论他们向哪个方向拖动(向前、向后、左右),角色都会一直朝那个方向行走。
这一定已经完成了,但我在任何地方都找不到任何东西。我将相机作为角色的 child,所以已经处理好了,但对于角色移动,我所拥有的是:
void Update()
{
if (Input.touchCount == 1 && Input.GetTouch(0).phase == TouchPhase.Moved)
{
Vector3 target = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, -10f));
transform.Translate(Vector3.MoveTowards(transform.position, target, speed * Time.deltaTime) - transform.position);
}
这不能按需要工作。我可以在这里做什么?
例如,您可以尝试使用 UI 操纵杆 (https://assetstore.unity.com/packages/tools/input-management/joystick-pack-107631) 中的任意一个
并像这样访问它的参数:
public class TestMovement : MonoBehaviour
{
public float Speed;
public FloatingJoystick Joystick; //Set in the inspector, prefab from the asset
private void Update()
{
transform.Translate(new Vector2(Joystick.Horizontal, Joystick.Vertical) * Speed * Time.deltaTime);
}
}
好的,我有一个为 iOS 构建的 3D Unity 游戏,将在其中实现这些控件(以第一人称射击方式):
- 镜头紧跟在角色后面
- 将手指保持在屏幕上会使角色行走,手指向上会使它停止
- 这就是问题所在:无论用户开始触摸屏幕的哪个位置,无论他们向哪个方向拖动(向前、向后、左右),角色都会一直朝那个方向行走。
这一定已经完成了,但我在任何地方都找不到任何东西。我将相机作为角色的 child,所以已经处理好了,但对于角色移动,我所拥有的是:
void Update()
{
if (Input.touchCount == 1 && Input.GetTouch(0).phase == TouchPhase.Moved)
{
Vector3 target = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, -10f));
transform.Translate(Vector3.MoveTowards(transform.position, target, speed * Time.deltaTime) - transform.position);
}
这不能按需要工作。我可以在这里做什么?
例如,您可以尝试使用 UI 操纵杆 (https://assetstore.unity.com/packages/tools/input-management/joystick-pack-107631) 中的任意一个
并像这样访问它的参数:
public class TestMovement : MonoBehaviour
{
public float Speed;
public FloatingJoystick Joystick; //Set in the inspector, prefab from the asset
private void Update()
{
transform.Translate(new Vector2(Joystick.Horizontal, Joystick.Vertical) * Speed * Time.deltaTime);
}
}