除了Z轴外,我希望子画面始终面向相机。当我移动相机时,我的子画面会一直向左或向右倾斜,而我没有。
我已经搜索了几个小时。我尝试过transform.LookAt或Quaternion.LookRotation并将z手动设置为0,但是无论出于什么原因,z都会不断调整。我已经看到并尝试了许多解决方案,感觉它们应该可以工作,但实际上不可行。如果重要的话,我的精灵是另一个对象的子对象,但是尝试localRotation也不起作用。冻结刚体约束也无效。
我能得到的最准确的信息是:
public class Billboard : MonoBehaviour
{
GameObject cam;
float minDist;
// Start is called before the first frame update
void Start()
{
cam = GameObject.Find("Main Camera");
}
// Update is called once per frame
void LateUpdate()
{
//Scale
minDist = cam.GetComponent<CameraOrbit>().distanceMin;
transform.localScale = new Vector3(1f, 1f, 1f) * (cam.GetComponent<CameraOrbit>().distance - minDist) * 1.01f / 3;
//Direction
transform.LookAt(cam.transform.position);
Vector3 rot = transform.rotation.eulerAngles;
transform.rotation = Quaternion.Euler(rot.x, rot.y, 0);
}
}
这样我可以让精灵面对镜头,但是z轴拒绝保持为零。
答案 0 :(得分:0)
答案 1 :(得分:0)
我遇到了类似的问题,我希望始终查找一些3d文字,但将其旋转到相机上。
对我有用的是在应用视线旋转之后将不需要的欧拉分量设置为零。
在您的情况下,将是这样。
transform.LookAt(cam.transform.position);
var rot = transform.rotation.eulerAngles;
transform.rotation = Quaternion.Euler(rot.x, rot.y, 0);
如果您需要另一个z值,只需替换0。
答案 2 :(得分:0)
特别感谢StarManta在Unity论坛上回答了这个问题。
“好吧,我想我知道发生了什么。它们看起来像是在旋转,这是一种幻觉;我认为他们确实是准确地对准了相机并朝上。但是,当照相机确实具有直线投影时,将其视作具有圆形/鱼眼镜头的投影。通常这并不重要,但在这种情况下确实如此。很难确切解释这会如何影响镜头,但是结果是,当屏幕中心两侧的内容都设置为“朝相机看”时,它们实际上似乎是围绕其Y轴旋转的。
解决这个问题的方法实际上很烦人:不要将旋转设置为看摄像机,而是将其设置为与摄像机相同。”
Exception in thread "main" java.time.format.DateTimeParseException: Text '201901' could not be parsed: Unable to obtain LocalDate from TemporalAccessor: {WeekOfYear[WeekFields[MONDAY,4]]=1, WeekBasedYear[WeekFields[MONDAY,4]]=2019, DayOfWeek=7},ISO of type java.time.format.Parsed
at java.time.format.DateTimeFormatter.createError(DateTimeFormatter.java:1931)
at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1866)
at java.time.LocalDate.parse(LocalDate.java:411)
at Main.formatter1(Main.java:22)
at Main.main(Main.java:10)
Caused by: java.time.DateTimeException: Unable to obtain LocalDate from TemporalAccessor: {WeekOfYear[WeekFields[MONDAY,4]]=1, WeekBasedYear[WeekFields[MONDAY,4]]=2019, DayOfWeek=7},ISO of type java.time.format.Parsed
at java.time.LocalDate.from(LocalDate.java:379)
at java.time.LocalDate$$Lambda$7.000000001061ED20.queryFrom(Unknown Source)
at java.time.format.Parsed.query(Parsed.java:237)
at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1862)
... 3 more