我的解释可能不清楚,如果是,请发表评论以进一步澄清。
我试图让角色跳到屏幕的高度 到目前为止,这是我的代码:
var limit = 0;
function jump()
{
ball.posy -=10;
limit++;
if(limit>screenheight)
{
//if character reached top of screen stop this jump() function
isjump = false;
limit = 0;
}
}
上面的代码将使角色跳到屏幕高度。但是如果屏幕高度较小(例如,在某些移动设备中),则字符跳转会更快 如果有任何有想法的游戏开发者,你能指导我吗? :)谢谢。
答案 0 :(得分:2)
好的问题是你需要先了解你的跳跃速度。现在它正在根据您的屏幕进行操作,例如:
function jump()
myjump += 10 // this is what you are doing now
{
所以我们修复那个功能,怎么样? 让我们根据屏幕高度制作10个变量
假设您的屏幕现在是800px高度,因此对于800px高度屏幕,您将添加10px,但对于400高度屏幕,您只需要添加5px !!。
那我们怎么做呢?
使用这个简单的公式
var scaleJump = 10 * (screenHeigth/800)
function jump()
myjump += scaleJump
{
所以现在如果你的屏幕高度是800,你的var scaleJump将是= 10 *(800/800)= 10
如果您的屏幕高度为400,则scaleJump将= 10 *(400/800)= 5
所以问题解决了!!如果屏幕是400,它将增加5,如果屏幕是800,它将增加10,如果任何其他颜色,它将根据需要进行缩放
好的,我们如何知道绘制框架所需的时间?
since: fps = frames / second
so: 1/fps = seconds / frame
这是一个微分方程,其中有deltaTime和deltaDistance
DeltaTime等于:
1/fps
和DeltaDistance就是这个,如果fps总是相同的,但是就像它们不是我解释如下:
10 * (screenHeigth/800)
现在让我们根据您的需要设置基本速度,因为我没有您的代码我不确定这是快速还是慢,但您可以测试它并根据需要进行更改。
让速度设置为1(我不知道它是快还是慢,只需将其改为后者)
since speed = DeltaDistance / DeltaTime
所以让我们得到你必须添加的距离,以便速度相同:
DeltaDistance = Speed * DeltaTime
现在你的代码看起来像这样
var DeltaDistance;
var DeltaTime = (1 / fps)
var mySpeed = 1
function jump()
DeltaDistance = mySpeed * DeltaTime
myJump += DeltaDistance
{
我想念大学:(