Hey Leute,
ich habe mir gerade dieses:
(44) Basic Third Person Character Controller in Unity - Unity C# Tutorial 2022 - YouTube
Tutoral für third person controller angeschaut. Nach programmierung der Scripts habe ich aber zwei Bugs:
Mein Character "slided" weiter über den Boden auch wenn ich aufhöre w zu drücken. Man kann sich das vorstellen wie auf einer Eisbahn.
Obwohl ich eine Rigidbody eingefügt habe, fällt der Character nicht auf den Boden! Mein leicht abgeänderter Code:
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.GetKey(KeyCode.W))
{
playerRigid.velocity = transform.forward * w_speed * Time.deltaTime;
}
if (Input.GetKey(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);
}
}
}
Danke für alle Antworten