Home > Net >  Unity third person Character Controller buggy
Unity third person Character Controller buggy

Time:07-25

I just finished watching this:

Youtube - third person controller

Tutorial for third person controller. But after programming the scripts I have two bugs:

My character keeps "sliding" across the floor even when I stop pressing w. You can imagine it like on an ice rink.

Although I have inserted a rigidbody,but the character does not fall to the ground! My slightly modified code from the Video:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class player : MonoBehaviour
{
    public Animator playerAnim;
    public Rigidbody playerRigid;
    public float w_speed, wb_speed, olw_speed, rn_speed, ro_speed;
    public bool walking;
    public Transform playerTrans;


void FixedUpdate()
{
    if (Input.GetKeyDown(KeyCode.W))
    {
        playerRigid.velocity = transform.forward * w_speed * Time.deltaTime;
    }
    if (Input.GetKeyDown(KeyCode.S))
    {
        playerRigid.velocity = -transform.forward * wb_speed * Time.deltaTime;
    }
}
void Update()
{
    if (Input.GetKeyDown(KeyCode.W))
    {
        playerAnim.SetTrigger("walk");
        playerAnim.ResetTrigger("idle");
        walking = true;
        //steps1.SetActive(true);
    }
    if (Input.GetKeyUp(KeyCode.W))
    {
        playerAnim.ResetTrigger("walk");
        playerAnim.SetTrigger("idle");
        walking = false;
        //steps1.SetActive(false);
    }
    if (Input.GetKeyDown(KeyCode.S))
    {
        playerAnim.SetTrigger("walk");
        playerAnim.ResetTrigger("idle");
        walking = true;
    }
    if (Input.GetKeyUp(KeyCode.S))
    {
        playerAnim.ResetTrigger("walk");
        playerAnim.SetTrigger("idle");
        walking = false;
    }
    if (Input.GetKey(KeyCode.A))
    {
        playerTrans.Rotate(0, -ro_speed * Time.deltaTime, 0);
    }
    if (Input.GetKey(KeyCode.D))
    {
        playerTrans.Rotate(0, ro_speed * Time.deltaTime, 0);
    }
    
}

}

CodePudding user response:

Did you assign physics material to your rigidbody? If not then go to Assets > Create Physic Material and create a new one. Give it high friction and add it to your rigidbody. More Info here: https://docs.unity3d.com/Manual/class-PhysicMaterial.html

  • Related