【问题标题】:(Unity) Need to place object at specific coordinates(统一)需要将物体放置在特定坐标
【发布时间】:2018-08-23 11:10:23
【问题描述】:

我最近才开始使用 Unity,并将我的预制代码转换为它。现在我试图让一个对象出现在一个特定的坐标,在 2D 中。

我会尽力解释。游戏有主界面窗口,带有某种框架。游戏室需要出现在框架内。因此,在 Unity 主窗口中,我手动放置了一个这样的房间,以记下游戏房间的坐标。现在,我想编写一个脚本,将对象放置在这些坐标中。

例如,假设这些坐标是:(30,40)。

为了确保我说清楚:30 和 40 是大区域左上角和内部小区域左上角之间的距离。

我尝试在网上查找有关如何使用这些坐标的信息,并找到了有关 Vectors 的信息。

这就是我想要做的:

 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 using UnityEngine.UI;

  public class AreaContainerScript : MonoBehaviour
 {
static List<GameObject> SmallAreas = new List<GameObject>();

static Vector2 SmallVector = new Vector2(20, 280);

void DefineSmallAreas()
{        
    SmallAreas.Add(GameObject.Find("areaConfirmLoad"));
    SmallAreas.Add(GameObject.Find("areaConfirmQuit"));
//...
}



void StartAllAreas()
{
    DefineSmallAreas();


    foreach (GameObject thisObject in SmallAreas)
    {
        thisObject.transform.position = SmallVector;
        thisObject.SetActive(false);
    }
}

仅当我将 Vector 属性设置在 -1 和 1 之间时,我才能直观地看到相关图像(在错误的位置)。

经过一番尝试,我了解到,向量 x 和 y 值应该采用不同的格式,它们应该是小数,始终在 -1 和 1 之间。

如何将精确坐标转换为这个小数?或者也许我应该使用不同的方法?

提前谢谢你,

叶甫盖尼

【问题讨论】:

标签: c# unity3d vector graphics coordinates


【解决方案1】:

“我明白了,向量 x 和 y 的值应该是不同的格式,它们应该是小数,总是在 -1 和 1 之间。”

只有称为 NORMAL 向量的特殊类型的向量才需要具有此范围内的值。它们的特别之处在于法线向量的长度始终为 1。 所以,我们知道 1= sqrt(x* x + y* y) - 这就是毕达哥拉斯定理。 (请注意,要使这个等式成立,x 和 y 都不能超出 -1 到 1 的范围;试试吧。)

使用长度为 1.0 的向量的优势在于:如果您将其两个分量(x 和 y)乘以相同的数字(“缩放”向量)假设.. A,那么结果的长度矢量将是,正好= A。例如A = sqrt(A* x* x + A* y* y)

我们可以使用类似的缩放方法来获取定位和调整小房间所需的两个向量,作为大房间的特定部分。 假设大房间有一个位置(Xpos,Ypos)和一个尺寸(Xsize,Ysize):

1)如果我们想让小房间的大小是大房间的一半,我们可以将小房间的大小定义为(Xsize/2, Ysize/2)。 (统一起来,你可以将整个向量乘以 0.5f)

2)如果我们希望小房间的左上角位于大房间下方的三分之一处,我们将定义它与左上角的距离如下: distance vector = (Xsize/3, Ysize/3)(我们将大房间的大小缩小三分之一)

3)现在我们可以将这个结果添加到大房间的左上角——这称为向量偏移。

small room top left location(a vector) = distance(the vector we just computed) + top left of lerge room(a vector)

(x,y)= (Xsize/3,Ysize/3) +(Xpos,Ypos)

【讨论】:

    猜你喜欢
    • 2021-12-25
    • 2011-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-11
    相关资源
    最近更新 更多