让我们说我在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,之前删除了它们,因为我认为它会给出一个更简单的问题。