C# 按下屏幕时移动立方体

C# 按下屏幕时移动立方体,c#,unity3d,C#,Unity3d,我已经在Unity中创建了一个Android游戏。宽高比为9:16。在屏幕的左下角有一个立方体,我正在尝试编写代码,这样,如果单击屏幕,立方体将移动到屏幕的中间底部,然后在下一次单击右下角 我在网上搜索过,但没有找到任何有用的东西。有人能帮我一个忙或者给我指一个教程吗?你可以使用在屏幕坐标和世界坐标之间转换 您可以将屏幕相对位置存储在阵列中,并在它们之间循环: Vector3[] positions = new Vector3[] { new Vector3(Screen.Width/2

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


我在网上搜索过,但没有找到任何有用的东西。有人能帮我一个忙或者给我指一个教程吗?

你可以使用在屏幕坐标和世界坐标之间转换

您可以将屏幕相对位置存储在阵列中,并在它们之间循环:

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;
    }
}
检测屏幕上的点击 无效更新 { 如果Input.touchCount>0 { //有人点击了屏幕! } } 从屏幕位置获取中下和右下世界位置 您可能需要在这些数字上加一些偏移,因为它将是边的精确像素:

Vector3 worldBottomMiddle=Camera.main.screen到WorldPoint新建Vector2 screen.width/2,0f; Vector3 worldBottomRight=Camera.main.screen到WorldPoint新建Vector2 screen.width,0f; 移动立方体 transform.position=Vector3.向位置移动; 一切都在一起 矢量3;中间; 向量3右下角; 矢量3靶; bool-cubeIsMoving=false; 无效启动 { worldBottomMiddle=Camera.main.screen到WorldPoint新矢量2 screen.width/2,0f; worldBottomRight=Camera.main.screen到WorldPoint新矢量2 screen.width,0f; 目标=变换位置; } 无效更新 { 如果Input.touchCount>0 { cubeShouldMove=真; 如果目标==worldBottomMiddle 目标=右下角; 其他的 目标=中间; } 如果立方体移动和向量3.distance变换位置,目标<1 { transform.position=Vector3.MoveTowardstarget; } } 这样应该行得通,但不太好。如果你能更详细地说明你希望事情如何进行,我可以将解决方案编辑成更漂亮的解决方案


编辑:刚才看到有另一个答案;您应该使用该代码在职位间循环。

请附上您迄今为止尝试过的内容,以便我们可以帮助您而不是为您工作。我也非常推荐您使用C而不是unityscript。是的,我现在使用C,但我已经安装了几天了,我只使用java和C。我尝试的是我有一个多维数据集,我想移动多维数据集,如果第一次单击屏幕,它将移动到中间底部,第二次单击屏幕,它必须移动到右侧底部和下一次单击它必须再次移动到左底部和。。。。。我希望你能理解,但我不知道你的代码是什么样子。你有什么东西吗?用于检测用户何时单击屏幕(如果没有其他内容)的代码?这样我就有事情要处理,这样我就知道我需要解释/填写多少。
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;
    }
}