c++ - 新旧位置之间的速度
问题描述
我在这里看到了通过为 UNITY 保存旧 pos 来获得速度的帖子,一些代码:
void TestVelocity(Vector3& Pos, Vector3 &Result)
{
Vector3 PreviousPos;
if (GetTickCount() >= velupd)
{
velupd = GetTickCount() + 100//random timer for test;
Vector3 Diff = Pos - PreviousPos;
float Len = sqrtf(Diff .x * Diff .x + Diff .y * Diff .y + Diff .z * Diff .z);
if (Len >= 0.01)
{
Result = (Diff / Len);
}
}
PreviousPos = Pos.
}
它计算错误。数据仅适用于对象位置(无速度等)。
解决方案
需要更多细节才能给您更准确的答案。但我基本上看到了两个问题。您没有初始化PreviousPos对象,在我看来您希望它持续存在,对吗?
假设Vector3类具有减号 ( - ) 运算符重载,因此您可以执行此操作,您可能会执行此操作。
void TestVelocity(Vector3& Pos, Vector3 &Result)
{
static Vector3 PreviousPos; //Initialize here the initial position to zero with your constructor
if (GetTickCount() >= velupd)
{
velupd = GetTickCount() + 100//random timer for test;
Vector3 Diff = Pos - PreviousPos;
float Len = sqrtf(Diff .x * Diff .x + Diff .y * Diff .y + Diff .z * Diff .z);
if (Len >= 0.01)
{
Result = (Diff / Len);
}
}
PreviousPos = Pos.
}
另一种解决方案是将先前的立场作为论据,但正如我所说,如果我们不知道您想要的实现是什么,这很难说。这些是基于似乎需要的建议。
推荐阅读
- maven - 未授权和“parent.relativePath”指向没有本地 POM @ 第 4 行,第 10 列
- azure-functions - Azure App 服务功能在正常工作一个月后失败
- ruby-on-rails - 从黄瓜测试生成 REST API 文档
- python - 在 python vaex 中删除重复的行
- css - 使用 auto-fit 和 minmax() 使 CSS 12 列网格响应
- angular - 值更改时输入动画 Angular 2+
- python - panda timedelta64[ns] 到年
- php - 检查 SSL 的功能加载时间过长
- python - 无法在 Dataproc 上运行 pySpark 作业
- c# - 如何在游戏内的浏览器窗口中打开离线图像?