- Home /
Charactercontroller won't go down, only goes up
Hey i have a player with a charactercontroller and an easy movementscript to walk. (player don't need to jump or something like that). but if it walk over a little blok. my player moves up. and is kind of flying above the ground. if go up a stair he keeps flying at that level. but my player won't go down.
sorry for my bad english . thanks for reading
(this is my movementscript)
public float MoveSpeed = 100f;
public bool attacking=false;
public bool IsWalking;
public CharacterController controller;
Vector3 lastPos;
void Start()
{
lastPos = transform.position;
}
void Update()
{
if (GameObject.Find("Cha_Knight").GetComponent<PlayerHealth>().currentHealth > 0)
{
Vector3 curPos = transform.position;
if (Input.GetKey("z"))
{
controller.Move(Vector3.forward * MoveSpeed * Time.deltaTime);
animation.CrossFade("Walk");
transform.forward = new Vector3(0, 0f, 1f);
IsWalking = true;
if (lastPos == curPos)
{
IsWalking = false;
}
}
else if (Input.GetKey("s"))
{
controller.Move(-Vector3.forward * MoveSpeed * Time.deltaTime);
transform.forward = new Vector3(0, 0f, -1f);
animation.Play("Walk");
IsWalking = true;
if (lastPos == curPos)
{
IsWalking = false;
}
}
else if (Input.GetKey("q"))
{
controller.Move(-Vector3.right * MoveSpeed * Time.deltaTime);
transform.forward = new Vector3(-1f, 0f, 0);
animation.CrossFade("Walk");
IsWalking = true;
if (lastPos == curPos)
{
IsWalking = false;
}
}
else if (Input.GetKey("d"))
{
controller.Move(Vector3.right * MoveSpeed * Time.deltaTime);
transform.forward = new Vector3(1f, 0f, 0);
animation.CrossFade("Walk");
IsWalking = true;
if (lastPos == curPos)
{
IsWalking = false;
}
}
else
{
IsWalking = false;
}
//animation.CrossFade("Wait");
lastPos = curPos;
}
}
Answer by Ulydev · Mar 12, 2015 at 06:20 PM
In order to make your player touch the ground, you need to apply gravity.
You have two ways of doing it : either apply it manually, or use controller.SimpleMove() instead of Move().
http://docs.unity3d.com/ScriptReference/CharacterController.SimpleMove.html
thanks , i try the simplemove command out. if i aplied manualy gravity my player just went trough the ground. so that didn't worked. ( already tried that)
if i change it to simplemove. my character rotate but just falls trought the ground if i press one the keys
i have no button "Generate Colliders". isn't that for a rigidbody?