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