Unity 第三人称角色控制器越野车

问题描述 投票:0回答:2

我刚刚看完这个:

Youtube - 第三人称控制器

第三人称控制器教程。但在编写脚本后,我有两个错误:

即使我停止按 w,我的角色仍会在地板上“滑动”。你可以想象它就像在溜冰场上一样。

虽然我插入了刚体,但是角色并没有掉到地上! 我对视频中的代码进行了稍微修改:

    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);
            }
        }
    }
c# unity-game-engine sliding
2个回答
0
投票

您是否为刚体指定了物理材质?如果没有,则转到“资源”>“创建物理材质”并创建一个新材质。赋予它高摩擦力并将其添加到刚体中。 更多信息:https://docs.unity3d.com/Manual/class-PhysicMaterial.html


0
投票

这是来自 Unity Asset Store 的最佳第三人称角色控制器列表。您可以查看一下 https://endlessexistence.com/2024/05/06/best-third-person-character-controller-for-unity/

© www.soinside.com 2019 - 2024. All rights reserved.