首页 > 其他分享 >【Unity踩坑记录】使用Rigidbody模拟跳跃时,刚体会突然上升

【Unity踩坑记录】使用Rigidbody模拟跳跃时,刚体会突然上升

时间:2024-08-30 14:53:14浏览次数:10  
标签:Rigidbody rigidbody jumpTriggered Vector3 moveVelocity Unity 跳跃 velocity 刚体

最初的写法

private void FixedUpdate()
{
    if (!isGrounded)
    {
        return;
    }

    float rawHorizontal = Input.GetAxis("Horizontal");
    float rawVertical = Input.GetAxis("Vertical");

    Vector3 localDirection = new(rawHorizontal, 0, rawVertical);
    Vector3 worldDirection = transform.TransformDirection(localDirection);
    Vector3 moveVelocity = worldDirection * moveSpeed;

    if (jumpTriggered)
    {
        jumpTriggered = false;
        moveVelocity.y = jumpVelocity;
    }

    rigidbody.velocity = moveVelocity;
}

经过不断地调试发现,标题所述问题是因为,当jumpTriggered为False,即没有按下跳跃键时,rigidbody的velocity.y被设置为了0,也就是说在跳跃后的一瞬间,velocity就被强制归零了,因此只要加下面这样一条即可。

    if (jumpTriggered)
    {
        jumpTriggered = false;
        moveVelocity.y = jumpVelocity;
    }
    else
    {
        moveVelocity.y = rigidbody.velocity.y;
    }

标签:Rigidbody,rigidbody,jumpTriggered,Vector3,moveVelocity,Unity,跳跃,velocity,刚体
From: https://www.cnblogs.com/rech/p/18388745

相关文章

  • WPF 现代化开发教程:使用 Microsoft.Extensions.Hosting 和 CommunityToolkit.Mvvm
    介绍随着WPF应用程序的复杂性增加,使用现代化的开发工具和模式变得尤为重要。本教程将指导你如何使用Microsoft.Extensions.Hosting和CommunityToolkit.Mvvm来开发一个现代化的WPF应用程序。这些工具为开发者提供了依赖注入、应用程序生命周期管理、MVVM模式支持等功能。先决......
  • 【Unity热门插件】Curvy Splines:Unity中的曲线艺术
    ......
  • 【Unity】经典四叉树的实现以及和无空间划分加速下的效率对比分析
    背景假如场景中存在大量的对象,需要快速找到某个范围内的所有对象,如果通过传统的方式,就需要对所有的物体遍历,依次判断是否在范围中,这样非常耗时。所以通过空间划分的方法将其加速,本文中采用四叉树的方式,从实现思想和代码层面对效率进行分析。思想在空间划分算法中首先需要对所有......
  • Unity嵌入安卓工程黑屏问题
    最近遇到了个很怪异的问题:UnityAdroid嵌入其它工程开启unity,闪过logo后黑屏持续10多秒。大致经过:Unity导出AndroidStudio工程,并将导出的unityLibrary嵌入其它已经做好的AndroidStudio工程,直接从Unity导出的AndroidStudio工程直接连接手机调试就不会出现卡顿现象,所以......
  • 【Unity基础】Unity中移动物体的8种方法
    本文主要介绍物体线性移动方法,是基于3D场景介绍的。当然在2D场景中也有对应的方法。首先物理学上,物体的运动可以分为运动学和动力学,二者的区别在于是否受外力影响。具体可以参看《什么是运动学和动力学》。从运动学方面,是通过改变物体的位置来实现的。在Unity中,可以使用Tran......
  • 【Unity输入】Unity输入方式总结
    在Unity中,常见的输入方式包括以下几种:1.键盘输入Input.GetKey():用于检测特定键是否被按下。例如,用Input.GetKey(KeyCode.W)检测玩家是否按下“W”键来控制角色移动。Input.GetKeyDown():用于检测某个键在当前帧是否被按下。Input.GetKeyUp():用于检测某个键在当前帧是否......
  • Unity 3D学习资料集合
    本文包含了unity3D游戏开发相关的学习资料,包含了入门、进阶、性能优化、面试和书籍等学习资料,含金量非常高,在这里分享给大家,欢迎收藏。学习社区1.Unity3D开发者Unity3D开发者论坛是一个专注于Unity引擎的开发者社区。在这个论坛上,开发者们可以分享自己的项目经验、技术问......
  • 免费、开源、详细完整的unity游戏、游戏源码、教程:人工智能分析和处理对话的美好三维
    这份unity游戏、游戏源码、教程:完全免费,完全开源,完整详细,通俗易懂,适合初学者入门,定期更新。我不想和任何人说话,任何人不要跟我说话,不要打扰我,我要安安静静的写。我解释一下原因:俗话说“道不同,不相与谋。”不是一个情感世界的人,就不该相互说话,两个不同情感世界的人,心灵是无法彼此......
  • 目录PyCharm Community Edition、python3.11、pythonProject之间的关系
    PyCharmCommunityEdition类型:PyCharmCommunityEdition是由JetBrains公司提供的免费、开源的集成开发环境(IDE)。用途:它专门为Python开发设计,提供了代码编辑、运行、调试、测试等功能。特点:包括智能代码补全、代码分析、图形化界面设计、版本控制集成等高级功能。Pyt......
  • Unity之OpenXR如何使用Netcode实现一个多人VR游戏
    前言NetcodeforGameObjects是专为Unity构建的高级网络库,可用于抽象网络逻辑。您可以通过网络会话同时向许多玩家发送GameObjects和世界数据。借助NetcodeforGameObjects,您可以专注于构建游戏,而无需考虑低级协议和网络框架。Netcode框架的核心特性包括:易于使用:......