c# - 我正在尝试简化以下 C# 代码,但如果我使用变量而不是硬值进行转换,它不会执行
问题描述
我使用 transform.translate 来移动我的游戏对象,代码可以正常使用硬编码值(前提是我确保将 f 添加到浮点数的末尾)但是当我给它一个变量以从代码中获取相同的值时似乎没有执行,也没有冻结我的团结。
我尝试通过 (float)Xstep 使变量变为浮点数,这导致按下 W 时没有任何反应。我修改了代码,最初它是从 X 中设置“原始 X”,这意味着每次 X 向下打勾时,orig X 也会这样做,而当按下 W 时代码什么也不做,这不是预期的结果。我不相信 and 之间有区别(float).25
,.25f
但是如果有的话,我在文档上没有找到任何关于后缀 f 的作用的内容
//Original code
public class Player : MonoBehaviour
{
void Update()
{
if (Input.GetKeyDown(KeyCode.W)) {
StartCoroutine("stepNorth");
}
}
IEnumerator stepNorth() {
var x = 4;
while (x > 0)
{
gameObject.transform.Translate(0, .25f, 0);
yield return new WaitForSeconds(.25f);
x = x - 1;
}
}
}
//new code using variable
public class Player : MonoBehaviour
{
void Update()
{
if (Input.GetKeyDown(KeyCode.W)) {
StartCoroutine("stepNorth");
}
}
IEnumerator stepNorth() {
var origx = 4;
float Xstep = 1 / origx;
var x = origx;
while (x > 0)
{
gameObject.transform.Translate(0, (float)Xstep, 0);
yield return new WaitForSeconds((float)Xstep);
x = x - 1;
}
}
}
这段代码的最终目标是为 2d topdown 游戏制作一个移动系统,由瓷砖制成。每个小步的总和必须等于 1,以便游戏对象在它们移动的任何时候都位于图块的中心。我想简化它以使用变量,以便我可以更轻松地测试不同数量的“帧”。
解决方案
推荐阅读
- file - 如何在 Sublime Text 3 中更快地创建目录
- r - 拆分数据帧并写入 csv
- mysql - 一系列单元格中一组术语的出现次数
- java - Azure 事件中心 Java 客户端未处理数据
- ios - 如何在导航控制器上方添加视图?
- clojure - lein test with-profile 无法覆盖测试配置文件的 env 值
- jquery - jQuery帮助按钮导致调用页面动作
- azure-cognitive-search - 基于搜索列的 Azure 搜索排名
- jquery - 动态 DOM:如何在添加/删除动态元素以及在 DOM 中向上/向下移动元素时增加/减少 ID/名称?
- reactjs - 变量作为插值字符串