我試圖設置一個對象來實例化子彈4種方式時發射。例如如下:相同的預製實例在不同的速度
Assuming 'A' is the object:
^
|
<- A ->
|
v
我試圖設置它在上面指定的方向上拍攝4種方式。當前設置工作正常並且預製在方向上正確實例化。問題並非都以相同的速度發射。右邊和底部的拍攝正確,而頂部和左邊的拍攝方式較慢。
代碼設置對於所有方向都完全相同,並且它們都使用相同的預製和相同的速度,因此混淆了速度差異。請指教。謝謝。
public Rigidbody bulletPrefab;
//empty gameobjects to locate the positions
public Transform bulletStartPosRight, bulletStartPosLeft, bulletStartPosTop, bulletStartPosBottom;
private float bulletSpeed = 300;
// Update is called once per frame
void Update()
{
if (Input.GetButtonDown("Fire1"))
{
Rigidbody bulletInstance1, bulletInstance2, bulletInstance3, bulletInstance4;
bulletInstance1 = Instantiate(bulletPrefab, bulletStartPosRight.position, bulletStartPosRight.rotation) as Rigidbody;
//the force is always forward. I rotated the empty gameobjects in Unity instead of changing the code here to forward,up,right and so on.
bulletInstance1.AddForce(bulletStartPosRight.forward * bulletSpeed);
bulletInstance2 = Instantiate(bulletPrefab, bulletStartPosLeft.position, bulletStartPosLeft.rotation) as Rigidbody;
bulletInstance2.AddForce(bulletStartPosLeft.forward * bulletSpeed);
bulletInstance3 = Instantiate(bulletPrefab, bulletStartPosTop.position, bulletStartPosTop.rotation) as Rigidbody;
bulletInstance3.AddForce(bulletStartPosTop.forward * bulletSpeed);
bulletInstance4 = Instantiate(bulletPrefab, bulletStartPosBottom.position, bulletStartPosBottom.rotation) as Rigidbody;
bulletInstance4.AddForce(bulletStartPosBottom.forward * bulletSpeed);
}
}
與其調用'AddForce',您可能會嘗試直接指定新的剛體的'velocity'屬性。這避免了現有速度可能影響子彈的情況。除此之外,你應該仔細檢查你所有的旋轉是否與你期望的一樣。 – rutter 2014-09-26 22:55:12
旋轉是正確的,速度仍然給出相同的結果。提取這部分問題並創建一個小的Unity項目文件。如果你有時間,請看一看。 Dropbox鏈接位於上面的問題中。謝謝。 – kar 2014-09-27 09:03:20