使时间测量独立于FPS(2D C#)

时间:2016-05-09 13:49:58

标签: c#

让我们说我在2D平面上工作,屏幕底部有一个人,还有一个沿着Y轴向下移动的物体。

移动物体有以下移动代码:

transform.position += new Vector3 (0, -1, 0) * speed * Time.deltaTime;

现在,由于我希望能够修改对象与播放器连接所需的时间,我创建了这个,其中spawnTimeDistance是我们的关键因素:

  Instantiate (obstacle, player.transform.position + new Vector3(-0.50F , (spawnTimeDistance + obstacleDimensionY + pScript.playerDimensionY), -1), Quaternion.identity);

可以看出,spawnTimeDistance是与玩家Y距离的占位符。但是,使用此代码时,我的结果会出现很大的不一致,尤其是在比较设备时。我怀疑这是由距离依赖于FPS引起的,而不是实际的时间依赖性。

为了解决这个问题,我相信我应该以一种扩展的方式实现Time.deltaTime,但是我对如何实施是不安全的。

编辑 - spawnDistanceTime相关:

void Start() {
   spawnTimeDistance = 4F;
}

Vector2 sprite_size = obstacle.GetComponent<SpriteRenderer> ().sprite.rect.size;
        Vector2 spriteScale = obstacle.transform.localScale;
        float sizeAndScaleY = sprite_size.y * spriteScale.y;
        float obstacle_local_sprite_sizeY = (sizeAndScaleY / obstacle.GetComponent<SpriteRenderer> ().sprite.pixelsPerUnit) * 0.5F;
        obstacleDimensionY = obstacle_local_sprite_sizeY;

以上代码,对我的播放器来说同样如此。

编辑Instantiate以包含obstacleDimensions,之前删除了它们,因为我认为它会给出一个更简单的问题。

0 个答案:

没有答案