Tanks Tutorial - Shells not firing properly
I am very new to Unity and trying to learn. Working through the Firing Shells video of the Tanks Tutorial. Shells are not fired until fully charged, when fired it just explodes on tank.
using UnityEngine;
using UnityEngine.UI;
public class TankShooting : MonoBehaviour
{
public int m_PlayerNumber = 1;
public Rigidbody m_Shell;
public Transform m_FireTransform;
public Slider m_AimSlider;
public AudioSource m_ShootingAudio;
public AudioClip m_ChargingClip;
public AudioClip m_FireClip;
public float m_MinLaunchForce = 15f;
public float m_MaxLaunchForce = 30f;
public float m_MaxChargeTime = 0.75f;
private string m_FireButton;
private float m_CurrentLaunchForce;
private float m_ChargeSpeed;
private bool m_Fired;
private void OnEnable()
{
m_CurrentLaunchForce = m_MinLaunchForce;
m_AimSlider.value = m_MinLaunchForce;
}
private void Start()
{
m_FireButton = "Fire" + m_PlayerNumber;
m_ChargeSpeed = (m_MaxLaunchForce - m_MinLaunchForce) / m_MaxChargeTime;
}
private void Update()
{
// Track the current state of the fire button and make decisions based on the current launch force.
m_AimSlider.value = m_MinLaunchForce;
if(m_CurrentLaunchForce >= m_MaxLaunchForce && !m_Fired)
{
// at max charge, not yet fired
m_CurrentLaunchForce = m_MaxLaunchForce;
Fire ();
}
else if(Input.GetButtonDown(m_FireButton))
{
// have we pressed fire for the first time?
m_Fired = false;
m_CurrentLaunchForce = m_MinLaunchForce;
m_ShootingAudio.clip = m_ChargingClip;
m_ShootingAudio.Play ();
}
else if(Input.GetButton(m_FireButton) && !m_Fired)
{
// holding the fire button, not yet fired
m_CurrentLaunchForce += m_ChargeSpeed * Time.deltaTime;
m_AimSlider.value = m_CurrentLaunchForce;
}
else if(Input.GetButton(m_FireButton) && !m_Fired)
{
// we released the button, having not fired yet
Fire ();
}
}
private void Fire()
{
// Instantiate and launch the shell.
m_Fired = true;
Rigidbody shellInstance = Instantiate (m_Shell, m_FireTransform.position, m_FireTransform.rotation) as Rigidbody;
shellInstance.velocity = m_CurrentLaunchForce * m_FireTransform.forward;
m_ShootingAudio.clip = m_FireClip;
m_ShootingAudio.Play ();
m_CurrentLaunchForce = m_MinLaunchForce;
}
}
Comment
Your answer
Follow this Question
Related Questions
Tanks Tutorial: Accessing TankHealth 1 Answer
Multiple problems in Tanks! tutorial... 0 Answers
Survival Shooter Error CS0120 1 Answer
Tanks tutorial 'Input' issue 0 Answers
Enemy Follow Player tutorial? 1 Answer