- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在浏览 player movement code对于source engine当我偶然发现以下功能时:
void CGameMovement::Accelerate( Vector& wishdir, float wishspeed, float accel )
{
int i;
float addspeed, accelspeed, currentspeed;
// This gets overridden because some games (CSPort) want to allow dead (observer) players
// to be able to move around.
if ( !CanAccelerate() )
return;
// See if we are changing direction a bit
currentspeed = mv->m_vecVelocity.Dot(wishdir);
// Reduce wishspeed by the amount of veer.
addspeed = wishspeed - currentspeed;
// If not going to add any speed, done.
if (addspeed <= 0)
return;
// Determine amount of accleration.
accelspeed = accel * gpGlobals->frametime * wishspeed * player->m_surfaceFriction;
// Cap at addspeed
if (accelspeed > addspeed)
accelspeed = addspeed;
// Adjust velocity.
for (i=0 ; i<3 ; i++)
{
mv->m_vecVelocity[i] += accelspeed * wishdir[i];
}
}
虽然我理解利用 wishdir 和 wishspeed 来计算速度增量的概念,但我不明白为什么他们在计算加速度
:
accelspeed = accel * gpGlobals->frametime * wishspeed * player->m_surfaceFriction;
我认为它以某种方式补偿了由于摩擦引起的速度降低 that was calculated earlier ,但是将这两个变量与 accel * gpGlobals->frametime
相乘似乎没有物理意义。
有人能解释这个计算背后的想法,以及为什么这个额外的 wishspeed * player->m_surfaceFriction
因素应用于 accelspeed
吗?
最佳答案
我认为作者让 wishspeed
只是作为 accel
的缩放器,所以 currentspeed
的速度达到了 wishspeed
与 wishspeed
的大小呈线性相关,从而确保 currentspeed
达到 wishspeed
所需的时间对于不同的 大致相同wishspeed
如果其他参数保持不变。
上面的原因是因为这可能会产生作者想要的角色运动的某种紧迫和放松的效果,即当我们希望角色的速度大(小)时,角色的加速度也大(小),无论短跑或慢跑,变速在大致相同的时间内完成。
player->m_surfaceFriction
更明显,作者只是想要一种简单的(线性)方式让表面摩擦值影响玩家的加速度。
根据我自己的经验,当试图理解游戏开发领域内与数学相关的机制时,尤其是物理或着色器,我们应该更多地关注作者试图创造的最终效果或用户体验,而不是公式的数学严谨性。
我们不应该用这样的问题来困住自己:这个公式是真的吗?还是这个公式有任何物理意义?
好吧,如果你看一下物理模拟引擎的任何源代码,你会发现它们中的大部分(如果不是全部)都没有使用现实生活中的公式,而是依靠一堆数学技巧来创建最终效果模仿我们对现实生活物理学的期望。
例如,PBD 或 XPBD 是布料或软体模拟中使用最广泛的算法之一,顾名思义,它是基于位置的动态算法,这意味着它们明确地修改了粒子的位置,而不是像现实中那样以隐式方式预期生命(力影响速度然后影响位置),为什么我们使用这样的算法?因为它创造的视觉效果更符合我们的预期。
关于c++ - 源引擎-加速公式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71100809/
#include using namespace std; class C{ private: int value; public: C(){ value = 0;
这个问题已经有答案了: What is the difference between char a[] = ?string?; and char *p = ?string?;? (8 个回答) 已关闭
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 7 年前。 此帖子已于 8 个月
除了调试之外,是否有任何针对 c、c++ 或 c# 的测试工具,其工作原理类似于将独立函数复制粘贴到某个文本框,然后在其他文本框中输入参数? 最佳答案 也许您会考虑单元测试。我推荐你谷歌测试和谷歌模拟
我想在第二台显示器中移动一个窗口 (HWND)。问题是我尝试了很多方法,例如将分辨率加倍或输入负值,但它永远无法将窗口放在我的第二台显示器上。 关于如何在 C/C++/c# 中执行此操作的任何线索 最
我正在寻找 C/C++/C## 中不同类型 DES 的现有实现。我的运行平台是Windows XP/Vista/7。 我正在尝试编写一个 C# 程序,它将使用 DES 算法进行加密和解密。我需要一些实
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
有没有办法强制将另一个 窗口置于顶部? 不是应用程序的窗口,而是另一个已经在系统上运行的窗口。 (Windows, C/C++/C#) 最佳答案 SetWindowPos(that_window_ha
假设您可以在 C/C++ 或 Csharp 之间做出选择,并且您打算在 Windows 和 Linux 服务器上运行同一服务器的多个实例,那么构建套接字服务器应用程序的最明智选择是什么? 最佳答案 如
你们能告诉我它们之间的区别吗? 顺便问一下,有什么叫C++库或C库的吗? 最佳答案 C++ 标准库 和 C 标准库 是 C++ 和 C 标准定义的库,提供给 C++ 和 C 程序使用。那是那些词的共同
下面的测试代码,我将输出信息放在注释中。我使用的是 gcc 4.8.5 和 Centos 7.2。 #include #include class C { public:
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
我的客户将使用名为 annoucement 的结构/类与客户通信。我想我会用 C++ 编写服务器。会有很多不同的类继承annoucement。我的问题是通过网络将这些类发送给客户端 我想也许我应该使用
我在 C# 中有以下函数: public Matrix ConcatDescriptors(IList> descriptors) { int cols = descriptors[0].Co
我有一个项目要编写一个函数来对某些数据执行某些操作。我可以用 C/C++ 编写代码,但我不想与雇主共享该函数的代码。相反,我只想让他有权在他自己的代码中调用该函数。是否可以?我想到了这两种方法 - 在
我使用的是编写糟糕的第 3 方 (C/C++) Api。我从托管代码(C++/CLI)中使用它。有时会出现“访问冲突错误”。这使整个应用程序崩溃。我知道我无法处理这些错误[如果指针访问非法内存位置等,
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 7 年前。
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,因为
我有一些 C 代码,将使用 P/Invoke 从 C# 调用。我正在尝试为这个 C 函数定义一个 C# 等效项。 SomeData* DoSomething(); struct SomeData {
这个问题已经有答案了: Why are these constructs using pre and post-increment undefined behavior? (14 个回答) 已关闭 6
我是一名优秀的程序员,十分优秀!