c# - 如何以随机间隔仅以不同的速度移动对象 500 像素?
问题描述
我正在尝试编写一段代码,允许对象随机“冲刺”500 像素。我已经把随机时间降低了,这是我遇到问题的特定距离。
这是一个我应该研究如何去做的任务,但我没有找到任何东西。我已经尝试创建一个增量变量,但计算速度不够快,我确信它与对象移动的这个方程有关:xPosition += xSpeed * xDirection;。我就是想不通。该代码还显示了一些其他功能,例如在覆盖 500 个像素后将速度降低到之前的速度。
另一个问题是我正在处理的网格有正数和负数,所以我不确定,但我是否也需要考虑这一点?
if (xSpeed >= 10)
{
if (xPosition < 0)
{
distance = distance + 1;
}
if (xPosition > 0)
{
distance = distance + 1;
}
}
if (collisionNum == ranCollision - 1)
{
dashPosStart = xPosition;
}
// Method for stopping dash
if (distance >= 500)
{
while (xSpeed > startSpeed)
{
xSpeed--;
}
ySpeed = xSpeed / 2;
}
if (distance == 500)
{
dashPosFin = xPosition;
}
xPosition += xSpeed * xDirection; // Horizontal movement
yPosition += ySpeed * yDirection; // Vertical movement
距离应该计算每个像素,但它的计算速度似乎比这慢得多,并且慢于每秒 60 次(程序工作的速度)。几天来我一直在努力解决这个问题,但我无法理解它。任何帮助/建议都会很棒!谢谢。
解决方案
你总是把距离加一;因此,破折号总是需要 500 帧才能完成,而不是 500 像素的距离。
最短的解决方法是通过每帧的破折号速度增加距离(确保适当地处理负值)。
推荐阅读
- sql - 比较 SQL 中两个不同的排名值
- firebase - Firestore Web 界面不允许创建阵列
- node.js - 如何在 Node.js 中从 Websocket 接收二进制数据?
- c# - 在没有位图的 C# 面板上绘制不止一件事
- php - 这种创建“真正”随机字符串的方式有意义吗?
- arrays - 在工作表数组中的工作簿之间复制和粘贴数据
- multithreading - 哪个在多核系统上有效 - 具有多个线程的进程或具有单个线程的多个进程?
- unity3d - 如何创建可折叠的汉堡菜单图标自定义检查器/编辑器 Unity
- scala - 在普通的 sql 平滑查询中使用 `TableQuery[A]`
- c++ - avl 树 - 将旋转问题