团结-使角色走向触摸/拖动位置?在3D空间中?

时间:2019-03-03 03:16:07

标签: c# unity3d physics game-development

好吧,我有一个专为iOS打造的3D Unity游戏,其中将实现这些控件(以第一人称射击方式):

  1. 相机紧随角色之后
  2. 将手指放在屏幕上可以使角色行走,手指向上可以使角色停止
  3. 这是问题所在:无论用户何时开始触摸屏幕,无论他们拖动的方向(向前,向后,向左,向右),角色都将无限地朝那个方向行走。

这一定已经完成了,但是我在任何地方都找不到。我把相机当成角色的孩子,所以照顾好了,但对于角色移动,我只有:

 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);

        } 

无法按需工作。我在这里可以做什么?

1 个答案:

答案 0 :(得分:0)

例如,您可以尝试使用任何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);
    }
}