- Home /
"Charge" shot script help
Im trying to make it, so when the user clicks and holds the mouse button down, the attack gets stronger over time. Currently that part of this script works fine, my problem is that the "chargeDamage" and "speed" variables, seem to grow exponentially rather than over a steady rate of time. And it doesn't seem to reset back to 0 as desired. Any help appreciated.
Heres the script
var projectile : Rigidbody;
var speed = 0;
var fireRate = 0.5;
private var nextFire = 0.0;
var chargeDamage = 0;
var chargeRate = 0.5;
var charging = 0;
function Update()
{
if (Input.GetMouseButtonDown(0))
{
charging = 1;
chargeDamage = 0;
speed = 0;
animation.Play ("DrawBow");
Debug.Log("Charging is True!");
}
//Begin adding to ChargeDamage
if (charging==1)
{
chargeDamage = (chargeDamage + (chargeRate * Time.time));
speed = chargeDamage;
print("The variable is :"+speed);
}
if (Input.GetMouseButtonUp(0))
{
//Fire Code Here, Reset Charge to 0
if (Time.time > nextFire)
var instantiatedProjectile : Rigidbody = Instantiate(projectile, transform.position, transform.rotation);
instantiatedProjectile.velocity = transform.TransformDirection( Vector3(0, 0, speed) );
Physics.IgnoreCollision( instantiatedProjectile.collider, transform.root.collider );
nextFire = Time.time + fireRate;
Debug.Log("Fired, Charge Reset!");
chargeDamage = 0;
charging =0;
speed = 0;
}
}
Answer by Kryptos · Nov 07, 2012 at 10:35 AM
You need to use Time.deltaTime instead of Time.time on this line:
chargeDamage = (chargeDamage + (chargeRate * Time.time));
I recommend to use this shortcut to make the code more readable:
chargeDamage += chargeRate * Time.deltaTime;
Hey, Thanks for the response.
I tried replacing that line of code with yours, however it seems that by using Time.deltaTime, my variable refuses to count past 0.
make sure chargeDamage is a float. var chargeDamage : float; It's probably an int and Time.deltaTime is a small fractional number. Just because you can declare variables untyped in UnityScript doesn't mean you should.
Ok, thanks to you both. All seems well with the code now, again Thank you. And, $$anonymous$$iloblargh, I will declare all variables from now on, thanks.
Your answer
Follow this Question
Related Questions
Multiple Cars not working 1 Answer
Very simple picking up items script? 2 Answers
Getting Error Object reference not set to an instance of an object 1 Answer
Trap Door Question 1 Answer
Need help syntax error 1 Answer