如何将立方体变成脸[重复]
Posted
技术标签:
【中文标题】如何将立方体变成脸[重复]【英文标题】:How to turn a cube to a face [duplicate] 【发布时间】:2021-12-19 14:13:18 【问题描述】:不管立方体旋转,按下按钮,立方体应该旋转到面。
例子:
我的代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening;
public class CubeDoTweenController : MonoBehaviour
private Quaternion targetRotation;
private void Awake()
targetRotation = transform.rotation;
private void Update()
if (Input.GetKeyDown(KeyCode.D))
targetRotation *= Quaternion.FromToRotation(Vector3.up, Vector3.right);
transform.DORotateQuaternion(targetRotation, 1f);
else if (Input.GetKeyDown(KeyCode.W))
targetRotation *= Quaternion.FromToRotation(Vector3.up, Vector3.forward);
transform.DORotateQuaternion(targetRotation, 1f);
几圈后,旧立方体开始旋转。在此先感谢您的帮助
【问题讨论】:
为什么不简单地使用*= Quaternion.Euler(90, 0, 0);
和 *= Quaternion.Euler(0,0,90);
呢?你也想像图中一样移动它吗?
没有补间代码是否可以工作?我的意思是,立即轮换调试
我使用了*= Quaternion.Euler(90, 0, 0);
和*= Quaternion.Euler(0,0,90);
,它也不起作用。不,我不想移动盒子,只是旋转。我也尝试在不使用 DoTween 的情况下旋转框,但决定使用 DoTween 进行测试,结果结果并没有改变
另外一个很重要的就是立方体的每个面都有自己的颜色!!!
所以如果我总结一下,你开始游戏,按下一个键,你的立方体就会转动。在你的立方体旋转了一些之后,看起来旋转有一个奇怪的偏移量,这是它还是我错过了什么?
【参考方案1】:
好的,我有解决您问题的方法...不要使用 Vectro3
轴,而是尝试使用您的 transform
轴,如下所示:
transform.rotation *= Quaternion.FromToRotation(transform.up, transform.forward);
问题是Quaternion.FromToRotation(Vector3 from, Vector3 to)
是计算from
和to
之间的角度。然后将此旋转应用于本地变换。
例如
Quaternion.FromToRotation(Vector3.up, Vector3.right);
生成绕 z 轴 90 度的旋转。
在你的游戏对象上应用两次,x 轴等于 -x 轴
Quaternion.FromToRotation(Vector3.up, Vector3.forward);
生成绕 x 轴 90 度的旋转。
但是现在,当你的 x 轴等于 -x 轴时,这就像是围绕 x 的旋转已经被反转了,但是如果你跟随立方体的旋转,一切都很好。
然后使用局部轴将跟随你的立方体的旋转,并随着你的立方体在世界空间中旋转
【讨论】:
Quaternion.FromToRotation(Vector3.up, Vector3.right)
生成围绕 z 轴的旋转。
另外,transform.rotation *= Quaternion.FromToRotation(transform.up, transform.forward);
不会在世界空间中旋转。这是transform
的本地轮换。
感谢您的检查【参考方案2】:
我认为this 是你想要的。
【讨论】:
我已经找到了这个解决方案,但对我来说似乎很奇怪,原因如下: 1. 我需要最终旋转,为此,使用此解决方案,我首先必须旋转对象,缓存旋转并将对象返回到其原始状态 2. 需要最后的旋转,以便您可以在转弯过程中改变转弯的方向(立方体将同时向两个方向旋转),在这个解决方案中,转弯是被阻止并且在回合中的任何输入都不会被视为@gipsnichmeer 虽然此链接可能会回答问题,但有关堆栈溢出的答案应在答案正文中包含相关信息 我可能不称职,但我认为这是一个很好的答案,但我不会将其标记为我的问题@Ruzihm 的答案以上是关于如何将立方体变成脸[重复]的主要内容,如果未能解决你的问题,请参考以下文章
遗留 opengl - 渲染立方体地图布局,了解 glTexCoord3f 参数