首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Unity中沿垂直轴镜像对象?

在Unity中沿垂直轴镜像对象?
EN

Stack Overflow用户
提问于 2018-03-12 17:57:53
回答 2查看 4.8K关注 0票数 0

当在Unity中时,我想沿x轴对称镜像变换,对于许多形状,这很好用:

代码语言:javascript
复制
reflection.localRotation = new Quaternion(
        original.localRotation.x * -1f,
        original.localRotation.y,
        original.localRotation.z,
        original.localRotation.w * -1f
        );

reflection.localPosition = new Vector3(
        original.localPosition.x * -1f,
        original.localPosition.y,
        original.localPosition.z
        );

但是沿y轴镜像的代码是什么呢?沿z轴的镜像是什么?定位部分很简单,但我想知道四元数部分。谢谢!

EN

回答 2

Stack Overflow用户

发布于 2018-03-12 19:52:45

在3d中,您并不是沿着轴进行镜像,而是在平面上进行镜像。

有一个关于这方面的thread in the Unity forum。其中一种解决方案提出了一种方法,不仅可以旋转特定的轴对齐平面,还可以旋转由法线表示的任何镜像平面。

代码语言:javascript
复制
var objectQuat = transform.rotation;
var plane = GetMirrorPlane(); // choose yours here
var mirrorNormalQuat = new Quaternion(plane.x, plane.y, plane.z, 0);

var reflectedQuat = mirrorNormalQuat * objectQuat * mirrorNormalQuat;
transform.rotation = reflectedQuat;
票数 1
EN

Stack Overflow用户

发布于 2018-03-17 00:05:31

手动修改四元数(将其视为普通Vector4)不会得到正确的结果。你最好修改transform.eulerAngles (因为你想通过一个全局轴来镜像,所以我认为eulerAngles比localEulerAngles更合适,但是你可以使用这两种语言中的任何一种)

它仍然在内部转换为四元数,但在使用Euler坐标系统时,它只是更容易理解您在旋转方面所处的位置

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49232400

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档