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

安多特

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

移动脚本:

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);
        }
    }

}

先感谢您 :)

安多特

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

当我想让玩家跳时,他正在飞行(Unity2d)

当我将其设为活动状态时,相机会朝错误的方向移动。Unity5

当我在Unity中禁用MouseLook时,我仍然可以向上和向下查找

当我按下播放按钮时,我想播放最后解锁的关卡 Unity

当我没有在ccsm中启用unity插件时如何应用更改

当我在Unity中单击“锁定启动器”时,内部会发生什么?

当我在 Unity 中点击保存时 3-D 对象消失

当我仅使用Unity时,为什么会有海豚和Konqueror的更新?

每当我在Unity的搜索中进行搜索时,程序都会启动

当我使用Firebase Unity插件在android中实现FaceBook Auth函数时,它崩溃了

Unity 3d,当我点击屏幕时球体变成立方体

没有为此对象定义无参数构造函数。当我尝试Unity Dependency时

当我点击 1 次时,Unity 注册的是 2 次点击而不是 1 次;

当我运行此代码时,Unity 会出现故障并抛出很多错误

当我的角色移动到不同的方向时,我的 Unity 2D 播放器控制器脚本不会使我的角色翻转

我如何让我的角色在 unity3d 中移动

每当我停止单击时,为什么我的计时器在Unity上不起作用?

为什么我的对象在 Unity 中移动得太远?

仅当我移动笔记本电脑时,它才会关闭电源(不是有序关闭)

为什么错误显示“ ArgumentException:索引超出范围”。当我在Unity中获得触摸增量位置时?

在Unity中,当我实现Update()以及来自MonoBehaviour的其他消息时究竟发生了什么

在 C# unity 中,当我尝试添加更多内容时,数组会删除其先前的内容

当我按下按钮时,为什么小球没有在我的小程序中移动?

当我按下按键时,为什么我的精灵不在pygame中移动?

仅当我获得用户位置时,App Force才会关闭

当我点击任何链接时,Chrome浏览器标签会关闭

当我尝试pygame时,打开窗口会关闭

当我在TypeScript中移动文件时,是否有办法使WebStorm修复所有导入?

当我在视图控制器中移动时保存文本字段中的值