Im trying to figure out how to change the velocity of the rigidbody back to “0” when im not pressing the direction key im using unity 5 and have tried :
Rigidbody.velocity = Vector3.ClampMagnitude (Rigidbody.velocity, 5);
but im getting errors from it on my script. anyone know a velocity rest to 0 when not pressing anything?
here is my code in c#
using UnityEngine;
using System.Collections;
public class BoatController : MonoBehaviour {
CharacterController cc;
CharacterMotor cm;
ThirdPersonController tp;
GameObject player;
Transform defaultPlayerTransform;
bool isDriving=false;
// Use this for initialization
void Start () {
cc = GameObject.FindObjectOfType<CharacterController> ();
cm = GameObject.FindObjectOfType<CharacterMotor> ();
tp = GameObject.FindObjectOfType<ThirdPersonController> ();
player = cm.gameObject;
defaultPlayerTransform = player.transform.parent;
}
bool IsPlayerCloseToboat()
{
return Vector3.Distance (gameObject.transform.position,
player.transform.position)<5;
}
void SetDriving(bool isDriving)
{
this.isDriving = isDriving;
cm.enabled = !isDriving;
cc.enabled = !isDriving;
tp.enabled = !isDriving;
if (isDriving)
player.transform.parent = gameObject.transform;
else
player.transform.parent = defaultPlayerTransform;
}
// Update is called once per frame
void Update () {
if (Input.GetKeyDown(KeyCode.F)&& IsPlayerCloseToboat ())
SetDriving (!isDriving);
if (isDriving)
{
float forwardThrust = 0;
if(Input.GetKey(KeyCode.W))
forwardThrust = 1;
if(Input.GetKey(KeyCode.S))
forwardThrust = -1;
GetComponent<Rigidbody>().AddForce(gameObject.transform.forward*forwardThrust);
float turnThrust = 0;
if(Input.GetKey(KeyCode.A))
turnThrust = -1;
if(Input.GetKey(KeyCode.D))
turnThrust = 1;
GetComponent<Rigidbody>().AddRelativeTorque(Vector3.up*turnThrust);
}
Rigidbody.velocity = Vector3.ClampMagnitude (Rigidbody.velocity, 5);
}
}