为了账号安全,请及时绑定邮箱和手机立即绑定

Unity 沿 X 轴移动播放器

Unity 沿 X 轴移动播放器

C#
慕少森 2021-10-24 17:15:39
我正在尝试根据手指位置创建沿 x 轴的玩家移动。我需要发生的事情:不是多点触控。我想要这样一个玩家可以放下一根手指并抓住那个位置。然后检查玩家是否在 x 轴上沿屏幕拖动手指,并根据他们从第一次触摸时拖动手指的位置向左或向右移动玩家。因此,如果他们触摸屏幕并向左拖动:按速度向左移动,如果更改为向右拖动,则按速度向右移动。任何帮助都是极好的。
查看完整描述

2 回答

?
慕森卡

TA贡献1806条经验 获得超8个赞

最简单的方法是存储第一个触摸位置,然后将 X 与该位置进行比较:


public class PlayerMover : MonoBehaviour

{

    /// Movement speed units per second

    [SerializeField]

    private float speed;


    /// X coordinate of the initial press

    // The '?' makes the float nullable

    private float? pressX;




    /// Called once every frame

    private void Update()

    {

        // If pressed with one finger

        if(Input.GetMouseButtonDown(0))

            pressX = Input.touches[0].position.x;

        else if (Input.GetMouseButtonUp(0))

            pressX = null;



        if(pressX != null)

        {

            float currentX = Input.touches[0].position.x;


            // The finger of initial press is now left of the press position

            if(currentX < pressX)

                Move(-speed);


            // The finger of initial press is now right of the press position

            else if(currentX > pressX)

                Move(speed);


            // else is not required as if you manage (somehow)

            // move you finger back to initial X coordinate

            // you should just be staying still

        }

    }



    `

    /// Moves the player

    private void Move(float velocity)

    {

        transform.position += Vector3.right * velocity * Time.deltaTime;

    }


}

警告:此解决方案仅适用于具有可用触摸输入的设备(因为使用 Input.touches)。


查看完整回答
反对 回复 2021-10-24
  • 2 回答
  • 0 关注
  • 152 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信