這就是錯誤所在。
Vector3 targetPosition = new Vector3(target.position.x, target.position.y 1.29, transform.position.z);
在 target.position.y 1.29
它是 1.29
如果它只是 int 沒問題,但我想準確一些。
public Transform target;
public float smoothTime = 0.2f;
private Vector3 _velocity = Vector3.zero;
void LateUpdate()
{
Vector3 targetPosition = new Vector3(
target.position.x, target.position.y 1.29
, transform.position.z);
transform.position = Vector3.SmoothDamp(transform.position,
targetPosition, ref _velocity, smoothTime);
}
}
uj5u.com熱心網友回復:
以下陳述句應該可以正常作業,f在浮點數之后。
Vector3 targetPosition = new Vector3(
target.position.x, target.position.y 1.29f
,transform.position.z);
現在,為什么我們需要專門表示f浮點而不是另一種資料型別,而在其他語言中它是默認值?
因此,答案是在C#任何沒有任何符號的浮點數中都被視為double默認值。在 Unity 中,float我的推理中正在計算大部分數學,因為與float相比,浮點計算的double精度較低,并且由于精度較低,計算所需的處理能力較少,所以我猜是由于這個 Unity 可能選擇了float而不是double,但這只是我使用我目前的知識進行的推測/推理。
TL; 博士
f在處理 Unity 的數學時,我們應該使用符號來表示浮點數,即。向量、Regidbodies、四元數等。否則,C# 和 unity 都會將其視為雙精度值,并會拋出錯誤型別不匹配。
uj5u.com熱心網友回復:
下面的代碼應該可以作業。
Vector3 targetPosition = new Vector3(target.position.x, target.position.y (float)1.29, transform.position.z);
您可以將 a 轉換double為float使用(float).
解釋:
你得到的錯誤,因為1.29,其本身就是一個double。創建 new 時Vector3,您需要 3float秒。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/321424.html
下一篇:如何中止C#中的附加任務?
