【问题标题】:Moving an object on the x axis based on relative position of mouse根据鼠标的相对位置在 x 轴上移动对象
【发布时间】:2017-12-26 10:19:22
【问题描述】:

我正在使用 C# 在 Unity 引擎中创建 2D 游戏。我有一个在 y 轴上一致向上移动的玩家对象,我想让玩家通过在屏幕上拖动光标来控制它(想想在移动设备中滑动)。

我已经尝试了一些方法,但我必须一直拖动到屏幕边缘才能让我的播放器到达摄像机视图的边缘。如何改进控件以使玩家跟随鼠标在 x 轴上的位置? 谢谢。

if (moving == true)
    {
        Vector3 mouse Camera.main.ScreenToViewportPoint(Input.mousePosition);
        transform.position = new Vector3(mouse.x, transform.position.y, 0);
    }

【问题讨论】:

    标签: c# android unity3d


    【解决方案1】:

    您可以首先创建一个变量来存储鼠标单击时的位置以及玩家的位置。 然后相对于该位置移动玩家。

    这是你可以做的:(这可以改进)

    Vector3 mouseStartPosition;
    Vector3 playerPosOnMouseClick;
    if(Input.GetButtonDown(KeyCode.Mouse0){
        mouseStartPosition = Camera.main.ScreenToViewportPoint(Input.mousePosition);
        playerPosOnMouseClick = transform.position;
    }
    
    if (moving)
    {
        Vector3 currentMousePosition = Camera.main.ScreenToViewportPoint(Input.mousePosition);
        Vector3 newPosition = playerPosOnMouseClick + (mouseStartPosition - currentMousePosition);
        transform.position = new Vector3(newPosition.x, newPosition.y, 0);
    }
    

    【讨论】:

      猜你喜欢
      • 2023-03-08
      • 2015-11-05
      • 1970-01-01
      • 1970-01-01
      • 2014-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多