c# - 在游戏中移动物体
问题描述
我有一张图片,我正在尝试使用一个函数四处走动:
public void MoveXY(Vector2 target)
{
Vector2 startPosition = this.pos;
Vector2 endPosition = target;
float lerpAmount = 0.05f;
this.pos = Vector2.Lerp(startPosition, endPosition, lerpAmount);
}
我在游戏更新循环中调用它。
我想让一些变量bool 移动,跟踪我的 obj 正在移动,但我很难在游戏循环中实现这一点。
我需要类似的东西:
obj.MoveXY(target1);
如果命令一完成
obj.MoveXY(target2);
这样做的正确方法是什么?
解决方案
您遇到的困难是游戏应用程序的典型问题。与常规应用程序不同,您不能简单地通过语句序列反映动作序列,因为每次游戏循环更新时只会执行其中的一小部分。
您必须记住游戏的当前状态以及更新后的每个动作。这可能变得相当复杂。解决此问题的方法是使用有限状态机,如Game Programming Patterns / Design Patterns Revisited: State和Gamedevelopment Finite-State Machines: Theory and Implementation中所述。
推荐阅读
- azure-devops - Azure DevOps:版本变量类型
- java - 使用 Intellij 调试 Web 服务
- sql - 使用 regexp_substr 将格式与列中的其他文本分开
- javascript - jquery多维forloop json
- apache-spark - PySpark 下推时间戳过滤器
- regex - 嗨,如何在正则表达式中实现这一点?
- java - 如何以功能样式替换“return optObj.isPresent() ? new Obj2(optObj) : null”?
- python - Python 大众 Hyperopt
- osgi - Osgi ConfigurationAdmin 延迟激活组件
- git - 让 TortoiseGit 在 jupyter 笔记本上运行带有 nbstripout 的 git diff.textconv 过滤器