Unity3d C#炮塔炮弹赢得';别动
我在炮塔上工作。除了炮塔枪管里的弹丸外,我什么都做得很好。目前,唯一使用的桶是Unity3d C#炮塔炮弹赢得';别动,c#,unity3d,game-physics,C#,Unity3d,Game Physics,我在炮塔上工作。除了炮塔枪管里的弹丸外,我什么都做得很好。目前,唯一使用的桶是 void Start(){ firingPointRight = GameObject.FindGameObjectWithTag ("FiringPointRight").transform; firingPointLeft = GameObject.FindGameObjectWithTag ("FiringPointLeft").transform; } void Update() {
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);
}
}
}
射弹有自己的脚本吗?看起来您并没有为实例化的投射物设置任何速度 Translate()除了立即设置新位置外,在移动过程中不会执行太多操作。如果投射物附加了刚体组件,则可以直接设置刚体的速度 像这样:
InstantiateedProjectile.velocity = Vector3.forward * cannonAmmoSpeed;
这里不使用Time.deltaTime,因为它只需要包含在每帧执行的计算中
作为一个旁注,你可能会考虑重新使用你的耀斑效果,而不是每次拍摄一个新的。您可以将效果设置为不可见,并在两次拍摄之间将其重置,这将提供更好的性能。
谢谢您的提示。我通过取消选中inspector中刚体的“Is Kinetic”复选框使其工作。我也用了射弹的速度。