unity3d - 制作双面平面
问题描述
我是Unity的新手,所以也许我的问题太简单了,但我无法解决。我正在制作类似虚拟公寓设计师的东西,我使用平面来绘制墙壁,所以我有它的起点 X、终点 X、起点 Y、终点 Y 和高度。为了查看每面墙的两侧,我决定使用双层墙并将其旋转到 180(可能是错误的)。但每次尝试都有失败。当我使用简单plane.Rotate
时,它会旋转,但会改变它的位置,(就像中心在平面下方的某个地方)。当我使用时plane.RotateArount
,位置是正确的,但旋转不是。
有我如何创建飞机的代码
public static GameObject CreatePlane(float x1, float z1, float y1, float x2, float z2, float y2, Material material, bool rotate)
{
var go = new GameObject("plane");
var mf = go.AddComponent(typeof(MeshFilter)) as MeshFilter;
var mr = go.AddComponent(typeof(MeshRenderer)) as MeshRenderer;
var m = new Mesh();
m.vertices = new[]
{
new Vector3(x1, y1, z1),
new Vector3(x1, y2, z1),
new Vector3(x2, y2, z2),
new Vector3(x2, y1, z2)
};
m.uv = new[]
{
new Vector2(1,1),
new Vector2(1,1),
new Vector2(1,1),
new Vector2(1,1),
};
m.triangles = new[] {0, 1, 2, 0, 2, 3};
if (mr != null) mr.material = material;
if (mf != null) mf.mesh = m;
m.RecalculateBounds();
m.RecalculateNormals();
go.AddComponent<BoxCollider>();
return go;
}
和我的旋转尝试:
plane.AddComponent<RectTransform>().transform.rotation = Quaternion.Euler(0,0,180);
plane.transform.RotateAround(new Vector3(0,1,0),plane.transform.position, 180);
plane.transform.rotation = Quaternion.Euler(0,0,180);
plane.transform.localRotation = Quaternion.Euler(0,0,180);
先感谢您
另外,我注意到,当我在编辑器中旋转这个平面时,位置坐标也在变化。正常吗。。?
解决方案
为什么不创建一个立方体并在每个轴上给它一个比例。它会简单得多,你可以只在 Y 轴上旋转它们,你就完成了。最后,只需将所有立方体放置在您想要它们的位置,技术上就完成了。还有什么其他原因你想要飞机而不是立方体吗?
推荐阅读
- c - 堆栈分配太大
- python - python,使用 if else 语句计算曲棍球薪水
- c# - 枚举 HashSet 的 XML 命名空间
- python - Flask:在启动时插入一些测试数据?
- javascript - 根据环境以角度 4 动态更改 url
- wordpress - Woocommerce 优惠券免除定制费
- jquery - 在 SVG rgraph 中添加附加列以显示条形图的值
- smtp - 在 GitLab 11.4.4-ee 中更改通知邮件发件人姓名
- java - 进行二进制搜索时出现 java.lang.ArrayIndexOutOfBoundsException 错误?
- javascript - Typescript - 如何提取对象数组中的对象?