我在炮塔上工作。我把一切都搞定了,除了把炮弹射出炮塔炮管外。目前,唯一使用的桶是
void Start(){
firingPointRight = GameObject.FindGameObjectWithTag ("FiringPointRight").transform;
firingPointLeft = GameObject.FindGameObjectWithTag ("FiringPointLeft").transform;
}
void Update() {
if(Input.GetMouseButton(0)){
count++;
if (count >= maxCount)
{
count = 0;
//Debug.Log ("FIRE");
firingPointRight = GameObject.FindGameObjectWithTag ("FiringPointRight").transform;
firingPointLeft = GameObject.FindGameObjectWithTag ("FiringPointLeft").transform;
// Create cannon muzzle fire effect.
GameObject e1 = Instantiate (cannonMuzzleFire) as GameObject;
e1.transform.position = firingPointRight.transform.position;
e1.transform.rotation = firingPointRight.transform.rotation;
Destroy (e1, 0.03f);
GameObject e2 = Instantiate (cannonMuzzleFire) as GameObject;
e2.transform.position = firingPointLeft.transform.position;
e2.transform.rotation = firingPointLeft.transform.rotation;
Destroy (e2, 0.03f);
//-------------------------------------------
//Left cannon. Fire projectile from cannon.
//Debug.Log ("Firing Left");
Rigidbody InstantiateedProjectile = Instantiate(cannonAmmo, firingPointLeft.transform.position, firingPointLeft.transform.rotation) as Rigidbody;
if (InstantiateedProjectile != null)
{
print ("Firing projectile");
InstantiateedProjectile.transform.Translate(Vector3.forward * cannonAmmoSpeed * Time.deltaTime);
}
}
}
答案 0 :(得分:2)
射弹是否有自己的脚本?看起来你没有为实例化的射弹设置任何速度。
除了立即设置新位置之外,Translate()在移动方式上并没有太大的作用。如果射弹附有一个刚体部件,那么你可以直接设置刚体的速度。
像这样:
InstantiateedProjectile.velocity = Vector3.forward * cannonAmmoSpeed;
此处不会使用Time.deltaTime,因为它只需要包含在每帧执行的计算中。
作为旁注,您可能希望考虑重复使用眩光效果,而不是每次拍摄都会产生新效果。您可以使效果不可见,并在镜头之间重置,这样可以提供更好的性能。