当我在Unity中移动时,玩家重力关闭

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

我对团结还很陌生,我有两个脚本,顾名思义,一个用于重力,一个用于玩家移动。我使用重力脚本的原因是,第三人称运动不支持使用启用了位置和旋转的刚体,因此我冻结了刚体内部的位置和旋转(这会关闭刚体中的重力)。我自己制作了Gravity脚本,但是我遵循了有关玩家移动脚本的教程,因为我不知道如何进行第三人称移动,因此我真的不知道移动脚本中发生了什么。

运动脚本:

public class ThirdPersonMovement : MonoBehaviour
{
    public CharacterController controller;
    public Transform cam;
    public float speed = 6f;
    public float turnSmoothTime = 0.1f;
    float turnSmoothVelocity;

    void Update()
    {
        float horizontal = Input.GetAxisRaw("Horizontal");
        float vertical = Input.GetAxisRaw("Vertical");

        UnityEngine.Vector3 direction = new UnityEngine.Vector3(horizontal, 0f, vertical).normalized;

        if (direction.magnitude >= 0.1f)
        {
            float targetAngle = Mathf.Atan2(direction.x, direction.z) * Mathf.Rad2Deg + cam.eulerAngles.y;
            float angle = Mathf.SmoothDampAngle(transform.eulerAngles.y, targetAngle, ref turnSmoothVelocity, turnSmoothTime);

            transform.rotation = UnityEngine.Quaternion.Euler(0f, angle, 0f);
            UnityEngine.Vector3 moveDir = UnityEngine.Quaternion.Euler(0f, targetAngle, 0f) * UnityEngine.Vector3.forward;
            controller.Move(moveDir.normalized * speed * Time.deltaTime);

        }

    }
}

重力脚本:

public class gravityScript : MonoBehaviour
{
    public float GravitySpeed = -0.03f;
    public bool GravityCheck = false;

    void OnCollisionEnter(Collision col)
    {
        if (col.gameObject.name == "Terrain0_0")
        {
            GravityCheck = true;
        }
    }

    void OnCollisionExit(Collision col)
    {
        GravityCheck = false;
    }

    void Update()
    {
        if (GravityCheck == false)
        {
            transform.Translate(0, GravitySpeed, 0);
        }
    }

}

提前谢谢您:)

c# unity3d game-physics game-development
2个回答
0
投票

在重力脚本中尝试。

void OnCollisionExit(Collision col)
{
    if (col.gameObject.name == "Terrain0_0")
    {
        GravityCheck = false;
    }
}

让我知道它是否可以解决您的问题。


0
投票

我不知道发生了什么,但是当我今天(在发布后的第二天)打开它时,它工作正常。可能只是重新启动后已修复的错误。

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