我想知道太空飞船实际上要移动的方向,其运动路径。我就是这样
<div class="profile">
<img src="https://image.ibb.co/nr3C7T/pic.png">
<div class="sameline">
<h2>Title</h2>
<button>Click</button>
</div>
<form method="post">
<input type="text">
</form>
</div>
问题在于飞船的每一帧都不会移动太多,void Start() {
prevPos = transform.position;
}
void FixedUpdate() {
Vector3 currPos = transform.position;
Vector3 motion = currPos - prevPos;
Debug.Log("Current position: " + currPos + " Previous position: " + prevPos + " Difference: " + motion);
prevPos = currPos;
}
和currPos
(我想)之间的区别在于小数点(prevPos
例)。据我了解,向量最多可以保留7位小数,但是0.0530
等于(0,0,0)多数帧。
在上面的调试中,我得到了这些结果
当前位置:(0,0,0.5)前一个位置:(0,0,0.4)差异:(0,0,0)
答案 0 :(得分:1)
Debug.Log
函数用于截断Vector3
,以使其更具可读性。如果您需要显示所有小数,只需简单地创建一个函数即可连接并显示Vector3
的各个组成部分。
void PrintVector3(Vector3 message, int type = 1)
{
if (type == 1)
Debug.Log("X: " + message.x + " Y: " + message.y + " Z:" + message.z);
if (type == 2)
Debug.LogWarning("X: " + message.x + " Y: " + message.y + " Z:" + message.z);
if (type == 3)
Debug.LogError("X: " + message.x + " Y: " + message.y + " Z:" + message.z);
}
此外,将string
与Vector3
连接时,也会丢失小数位。您可以创建一个简单的函数来连接字符串,而Vector3则返回字符串。然后可以使用Debug.Log
打印此字符串。
string Concat(string val, Vector3 vec)
{
return val + " (" + vec.x + ", " + vec.y + ", " + vec.z + ")";
}
答案 1 :(得分:0)
正如 SilentSin 指出的,Vector3.ToString() 正在为您调用。如果自己调用ToString,可以控制舍入的精度。
Debug.Log("Current position: " + currPos.ToString("N4") + " Previous position: " + prevPos.ToString("N4") + " Difference: " + motion.ToString("N4"));
Debug.LogFormat("Current position: {0} Previous position: {1} Difference: {2}", currPos.ToString("N4"), prevPos.ToString("N4"), motion.ToString("N4"));
我发现这对调试很有用,因为我可以控制每个值声明的空间。