【发布时间】:2015-05-17 05:52:30
【问题描述】:
我正在使用 Unity 4.6 开发一个项目。我想知道是否有一种简单的方法可以以编程方式设置顶点位置。目前我的代码看起来像这样(C#):
public void createPoints(float x, float y, float z) {
point [0] = new Vector3 (x, y, z);
point [1] = new Vector3 (x, y, -z);
point [2] = new Vector3 (x, -y, z);
point [3] = new Vector3 (x, -y, -z);
point [4] = new Vector3 (-x, y, z);
point [5] = new Vector3 (-x, y, -z);
point [6] = new Vector3 (-x, -y, z);
point [7] = new Vector3 (-x, -y, -z);
}
其中 x、y 和 z 是预定值,point 是 Vector3[](数组)。棱镜的中心是点0,0,0(Unity 中的Vector3(0,0,0))。
例如,使用以下值:
- x = 1
- y = 2
- z = 3
生成的点数应该如下(顺序无关):
- (1,2,3)
- (1,2,-3)
- (1,-2,3)
- (1,-2,-3)
- (-1,2,3)
- (-1,2,-3)
- (-1,-2,3)
- (-1,-2,-3)
我的问题:有没有一种方法可以生成这些点,而无需对其中的值进行实际硬编码?
我当前所需解决方案的代码是:
public void createPoints(float originalX, float originalY, float originalZ) {
for (int i = 0; i < 8; i++) { //8 vertices exist of a rectangular prism
point [i] = new Vector3 (x, y, z);
}
}
如何更改此代码以生成这些正点和负点?我的猜测是 x、y 和 z 的正值和负值之间的某种交替,使用 i 的模数或将 i 除以其他整数的四舍五入,但是我无法绕开它。 C# 或 UnityScript 都可以。
换句话说,在 for 循环的每次迭代中,x = -x,对于每个事物 y = -y,对于每个事物 z = -z。
非常感谢任何帮助。
【问题讨论】:
-
我建议更改标题。这可能会产生误导。大多数人甚至不会阅读您的帖子并将其关闭,因为它是“基于意见的”,因为您使用了“最佳方式”这个词
-
谢谢,我刚刚编辑了标题并删除了“最佳方式”
标签: c# arrays unity3d unityscript