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");
    }
}

@Wesley21spelde

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! :slight_smile: