当前位置: 首页 > 知识库问答 >
问题:

不同屏幕尺寸的雪碧速度

董胡非
2023-03-14

我试图理解一款支持不同屏幕大小的游戏(android)中的速度概念。

假设我有一个精灵,从横向模式的右端到左端需要10秒。帧速率并不稳定,所以有时会持续30秒,然后突然变为10秒。但我还是希望我的雪碧从一端到另一端需要10秒钟。我该怎么做?

final int time = 10; //time from one end to the otehr
float baseSpeedX = screenWidth / time;
float currentFrameRate = 30.0; //just as an example
float baseFrameRate    = 50.0; //the frame rate we want
float factor = baseFrameRate / currentFrameRate;
playerSpeedX += baseSpeedX * factor;

这就是我所理解的:
通过将屏幕宽度除以从一端到另一端获取精灵的时间,可以获得基本速度。如果有稳定的帧速率,则基本速度是精灵每秒应添加到当前位置的速度。然而,我不知道如何做到这一点,所以我只需要得到当前的帧速率,然后除以基本帧速率,我们真正想要的游戏帧速率,得到我们乘以基本速度的系数。

如果真的有效,这将使雪碧在10秒内到达另一端,对吗?即使我们的帧率是10秒2秒,然后是50秒8秒。现在帧率越高,雪碧增加的距离越低,帧率越低,雪碧增加的距离越高。

如果这一切都起作用,我会在游戏中使用它吗?或者这是获得精灵速度的完全错误的方法

共有1个答案

钮晟
2023-03-14

你在正确的轨道上

一般来说,当你移动精灵时,你需要想办法让精灵在fps较高时移动得更慢,在fps较低时移动得更快。这可以通过将另一个名为delta变量乘以你的baseSpeed来实现。在这种情况下,Δ是从当前帧到前一帧所需的时间。有了这个,高fps的游戏将有一个低delta,因为从一帧到另一帧需要很短的时间。按照这个模式,低fps的游戏将看到大量的delta。通过计算增量,您可以使您的角色在不同fps目标下的速度保持一致。您通常可以通过减去当前时间和上次渲染时间来计算增量。

理论上,如果你使用你的baseSpeedX公式(乍一看,这似乎是合理的),并将其与delta相乘,你将得到你的速度:

double delta = currentTime - timeOfLastFrame; // I don't know specifically what time libraries there are on your platform
double speed = baseSpeedX * delta;

 类似资料:
  • 我试图用swXXXdp布局文件为不同的屏幕大小创建不同的布局。不幸的是,我仍然不能分开5,0“和6,3”作为可见的附上的图像。两种大小仍然使用相同的文件:layout-sw412dp。对此有什么想法吗?

  • 简介 本文将介绍 Weex 适配不同尺寸屏幕的方法以及横竖屏动态切换时如何自适应。 Weex 如何将前端样式值转换为系统坐标值 以 iOS 为例,在应用启动时,Weex 获取当前屏幕宽度作为全局默认值。在 iOS 系统上该宽度为实际像素/屏幕比例后的 UIKit 宽度。比如 iPhone6 为 375。 @implementation WXCoreBridge + (void)install

  • 问题内容: 嗨,我正在编写图形程序,我一直在寻找一种获取所使用屏幕物理尺寸的方法。我可以获得以像素为单位的屏幕大小以及逻辑分辨率。我似乎找不到任何地方可以获取任何显示器规格中始终具有的物理尺寸(例如19“-376 x 301 mm)。问题是,加载此信息时,此信息是否甚至还存储在OS中的任何位置?我正在编写的程序需要在Mac和Windows上运行。 谢谢! nt 问题答案: 我认为Java不可能实现

  • 问题内容: 我已经仔细阅读了http://developer.android.com/guide/practices/screens_support.html和其他相关网站中的文档,但我仍然对此表示怀疑。让我解释: 我已经为值,values-large和values- xlarge实现了dimens.xml,因此,例如,在平板电脑上运行时,我的Android应用程序很好。但是,我指定了填充,边距,

  • 问题内容: 无论屏幕大小如何,我都想使用Swift代码在我的应用程序中正确定位项目。例如,如果我希望按钮的宽度为屏幕宽度的75%,则可以做为按钮的宽度。我发现可以通过在Objective-C中确定 不幸的是,我不确定如何将其转换为Swift。有人有主意吗? 谢谢! 问题答案: 在Swift 3.0中 快点做:做这样的事情: 那么您可以像这样访问宽度和高度: 如果您想要屏幕宽度的75%,则可以执行以

  • 我仍然有问题的图像在我的应用程序的正确视图。所以在我的第一台设备上(5.2英寸 在第二台设备上(5.5英寸 这是我的布局中的ImageView: 我在Android博客上读到这篇文章后,将所有图像放在了drawable文件夹中: 通常有两种方法来针对所有屏幕DPI。1.最简单的方法-使所有图像特高或特高DPI。 如果设备与可绘制DPI不匹配,Android会自动缩放可绘制DPI。如果只创建高密度的