基于鼠标的相对位置在x轴上移动对象

时间:2017-12-25 20:02:03

标签: c# android unity3d

我正在使用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);
    }

1 个答案:

答案 0 :(得分:0)

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

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

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