SetSpeed float C#
hey guys my setspeed float does not work unity does not know it. i do not know how i should fix this how is it normaly done in C#? becouse this is based of java and i got as far as this
using UnityEngine; using System.Collections;
public class RocketLouncherUTR : MonoBehaviour {
public minimumRunSpeed = 1.0;//This is not working ?
public GameObject Weapon;// this is assinged becouse have al mt weapons attached to a box with the animations on it
// Use this for initialization
void Start () {
var r = Weapon.GetComponent<Animation>();
r.GetComponent<Animation>().wrapMode = WrapMode.Loop;
r.GetComponent<Animation>()["shoot"].wrapMode = WrapMode.Once;
r.GetComponent<Animation>()["idle"].layer = -1;
r.GetComponent<Animation>()["walk"].layer = -1;
GetComponent<Animation>().Stop();
}
void SetSpeed(speed : float)
{
if (speed > minimumRunSpeed)
GetComponent<Animation>().CrossFade("walk");
else
GetComponent<Animation>().CrossFade("Idle");
}
// Update is called once per frame
void Update()
{
if (Input.GetButtonDown("Fire1"))
GetComponent<Animation>().CrossFade("Shoot");
else
GetComponent<Animation>().CrossFade("Idle");
}
}
public float $$anonymous$$imumRunSpeed = 1f;
also
void SetSpeed(float speed)
Answer by Cepheid · Jan 24, 2016 at 06:43 PM
When using float values with their decimal places assigned you must use an 'f' at the end of the numerical value so that the compiler is aware that it is a float value. Otherwise you will likely get an error stating that it assumes it to be a double.
Secondly C# requires variable declarations to have the type be placed before the name of the variable. This is also true in a method's parameter. It also does not use colons in method parameters.
A revision of your class would be as follows:
public minimumRunSpeed = 1.0f; // 'f' is placed at the end of the number.
public GameObject Weapon;
void Start ()
{
var r = Weapon.GetComponent<Animation>();
r.GetComponent<Animation>().wrapMode = WrapMode.Loop;
r.GetComponent<Animation>()["shoot"].wrapMode = WrapMode.Once;
r.GetComponent<Animation>()["idle"].layer = -1;
r.GetComponent<Animation>()["walk"].layer = -1;
GetComponent<Animation>().Stop();
}
// Method parameter does not have a colon and data type is before the variable name.
void SetSpeed(float speed)
{
if (speed > minimumRunSpeed)
GetComponent<Animation>().CrossFade("walk");
else
GetComponent<Animation>().CrossFade("Idle");
}
void Update()
{
if (Input.GetButtonDown("Fire1"))
GetComponent<Animation>().CrossFade("Shoot");
else
GetComponent<Animation>().CrossFade("Idle");
}
With the revisions your class should work now. I hope this helped! :)
Your answer
Follow this Question
Related Questions
Why doesnt the value change? 2 Answers
How do I add two different values from a script on seperate game objects? 0 Answers
For with float i returning wrong number. 0 Answers
Unexpected symbol 'float' 1 Answer