我正在尝试将边框的位置更改为屏幕顶部。我通过取屏幕顶部,然后添加对象比例的一半(因为它在中间居中)来做到这一点。但是,当我这样做时,根本没有任何变化。我打印出坐标,它说它移动了,但它没有。这是我的代码(来自WallScalar类的Start()方法)。
注意: 以下代码是WallScalar类中唯一的代码,此脚本适用于" Top"游戏对象。
transform.position =
new Vector3(0, Camera.main.orthographicSize + (transform.localScale.y / 2), 1);
print("yCoor: " + transform.position.y);
由于对象的比例为1,而顶部的比例为y = 5,因此对象应放在y = 5.5f处。使用该打印声明,它表示它在y = 5.5f但它没有在我的屏幕上移动。这是一张更多细节的图片:
正如你所看到的,它表示它被移动到yCoor = 5.5f,但它没有,因为当我为y手动键入5.5时,它不可见,它就在屏幕外。 任何帮助解决这个问题将不胜感激。
更新:如果我输入一个打印声明,如
print("yCoorU: " + transform.position.y);
在我的更新方法中,它读取y = 5,所以有些东西强迫它回到5,但是知道没有其他任何东西可以调用" Top"正在应用脚本的GameObject。
答案 0 :(得分:2)
由于你要用int分隔,我认为transform.localScale.y / 2
的结果可能是0而不是0.5(虽然我不能理解为什么你的印刷品会给出正确的价值)
答案 1 :(得分:0)
我设法通过父对象的Y值为0.5来复制您的问题。确保您的父对象位于0,0,0
答案 2 :(得分:0)
所以,我发现必须禁用要更改位置的对象,设置位置然后再启用它。
Player.SetActive(false);
Player.transform.position = new Vector3(PositionX, PositionY, PositionZ);
Player.SetActive(true);
这可能是因为在游戏过程中,您尝试移动的玩家或对象处于静态模式。
Chirag Shah