c# - 沿 x 轴远离 y 轴的物体随机漂移
问题描述
我正在尝试制作一个简单的老虎机游戏。理想情况下,它就像赌场老虎机的屏幕一样。代码可能不是最干净的,所以我为此道歉。
我希望物体沿着 y 轴移动,直到它们碰到 y 边界。到达这个 y 边界后,它们将返回顶部,即“SpawnPosY”。由于某种原因,我无法弄清楚。每次碰到这个 y 边界时,对象都会从 y 轴沿 x 轴漂移(y 轴右侧的对象会继续向右移动,反之亦然)。
我试图通过添加另一部分代码来解决此问题,该代码将图标移回 x 轴上的位置,但它们一直在漂移(是的,我已经删除了这行代码,但没有运气)
我跟踪了 Icon 在 X 轴上的移动之一,以防万一它有助于获取数据。1 将代表它从一开始的位置,之后的每个数据点都将是卷轴旋转一圈后的 x 轴位置(图标触及 y 边界)。
0.369
-5.931
-18.533
-43.737
-94.145
-194.961
-396.593
谁能告诉我为什么会这样?
public class DestroyObjects : MonoBehaviour
{
public GameObject[] iconPrefabs;
public int iconNum = 0;
public float SpawnPosY = 12f;
private float SpawnPosX = 0.369f;
public float yBoundary = -0.369f;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
Vector2 spawnpos = new Vector2(transform.position.x, SpawnPosY);
Vector2 fixXpos = new Vector2(SpawnPosX, SpawnPosY);
if (transform.position.y < yBoundary)
{
transform.Translate(spawnpos);
transfrom.Translate(fixXpos);
}
}
}
解决方案
您最好使用不同的 Translate 函数重载,该函数采用单独的 x、y 和 z 值,以便您可以指定仅在 y 轴上移动。
您还应该在移动时应用 Time.deltaTime 以标准化帧速率
var speed = 12f;
transform.Translate(0, speed * Time.deltaTime, 0);
此外,将生成位置的创建移到更新之外,以便只计算一次,而不是每一帧
推荐阅读
- node.js - 无法对 Mongoose 结果执行操作
- python - Python:循环矩阵以检查向量中的所有值
- javascript - 如果链接到数组(javascript),函数如何仅使用一个括号工作
- php - 跨域 CSRF 令牌检查失败
- javascript - 自动完成功能无法正常工作
- cmake - 为 CMake 项目创建配置文件
- java - 根据全局布尔值运行一组测试
- sql - 如何合并来自同一个表的两个分组查询?
- bash - bash 脚本的 if 和 else 语句
- database - Weblogic 控制台上的应用程序 STOP/START 上的 ADF Web 应用程序数据库连接问题