按下屏幕时移动立方体



我已经创建了一个Unity的Android游戏。纵横比是9:16。屏幕的左下方有一个立方体,我正在尝试编写代码,以便如果单击屏幕,则立方体移动到屏幕的底部中间,然后在下一次单击右下角。

我在网上搜索,但没有发现任何有用的东西。有人可以帮我或将我指向教程吗?

检测单击屏幕

void Update() 
{
    if (Input.touchCount > 0)
    {
         // Someone clicked the screen!
    }
}
  • 文档

获得底部中间&屏幕位置右下世界位置

您可能需要在这些数字上偏移一些偏移,因为它将是边缘的确切像素:

Vector3 worldBottomMiddle = Camera.main.ScreenToWorldPoint(new Vector2(Screen.width / 2, 0f));
Vector3 worldBottomRight = Camera.main.ScreenToWorldPoint(new Vector2(Screen.width, 0f));

移动立方体

transform.position = Vector3.MoveTowards(position);

一切在一起

Vector3 worldBottomMiddle;
Vector3 worldBottomRight;
Vector3 target;
bool cubeIsMoving = false;
void Start()
{
    worldBottomMiddle = Camera.main.ScreenToWorldPoint(new Vector2(Screen.width / 2, 0f));
    worldBottomRight = Camera.main.ScreenToWorldPoint(new Vector2(Screen.width, 0f));
    target = transform.position;
}
void Update() 
{
    if (Input.touchCount > 0) 
    {
         cubeShouldMove = true;
         if (target == worldBottomMiddle)
             target = worldBottomRight;
         else
             target = worldBottomMiddle;
    }
    if (cubeShouldMove & Vector3.Distance(transform.position, target) < 1)
    {
         transform.position = Vector3.MoveTowards(target);
    }
}

类似的东西应该起作用,但这并不漂亮。如果您对您希望如何工作的详细介绍,我可以将解决方案编辑为更漂亮的解决方案。

编辑:刚看到另一个答案;您应该使用该代码在位置上骑自行车。

您可以使用摄像头在屏幕和世界坐标之间转换。Screentoworldpoint。

float distanceFromCamera = 1.0f;
Vector3 bottomCenter = new Vector3(Screen.Width/2, 0, distanceFromCamera);
Vector3 worldPos = Camera.main.ScreenToWorldPoint(bottomCenter);
myCube.transform.position = worldPos;

您可以将屏幕上的位置存储在数组中,并在它们之间循环:

Vector3[] positions = new Vector3[] {
    new Vector3(Screen.Width/2f, 0f, 1f),
    new Vector3(Screen.Width, 0f, 1f)
};
int counter = 0;
void Update() {
    if (Input.GetMouseDown(0)) {
        Vector3 pos = positions[Mathf.Min(positions.Length-1, counter++)];
        Vector3 worldPos = Camera.main.ScreenToWorldPoint(pos);
        myCube.transform.position = worldPos;
    }
}

最新更新