gpt4 book ai didi

swift - 如何使物理脉冲在所有设备上移动相同百分比的屏幕

转载 作者:可可西里 更新时间:2023-11-01 02:19:10 24 4
gpt4 key购买 nike

所以我想做的是让物理脉冲似乎对所有设备都有相同的效果。所以基本上,如果我能想出一种方法来执行以下操作,我就能够实现我的目标。

首先让我们通过消除所有引力来简化事情。

基本上,无论屏幕尺寸有多大,我都需要计算让屏幕最左侧的物理对象在相同的时间内到达屏幕最右侧所需的冲量。

我问的原因是我正在制作一个基于滑动幅度和角度的运动系统。但是我希望它在每台设备上都以相同的方式播放。我正在计算幅度(距离(以虚拟点为单位))/(做手势所花费的时间)

然后我将其用裁剪理脉冲。

这是我正在使用的代码:

func Jump(angle: CGFloat, strength: CGFloat)
{
if (Ready == true)
{
var rangle:CGFloat = angle * CGFloat(M_PI / 180)
var translate:CGPoint = CGPoint(x: 1, y: 0)
var vx:CGFloat = ((translate.x * cos(rangle)) - (translate.y * sin(angle)))
var vy:CGFloat = ((translate.y * cos(rangle)) + (translate.x * sin(rangle)))
vx *= width
vy *= height
vx *= (strength)
vy *= (strength)
vx /= 4000
vy /= 4000

print("Applying Impulse VX: ")
print(vx)
print(" , VY: ")
print(vy)
println(" )")
var velx = Cavity.physicsBody?.velocity.dx
var vely = Cavity.physicsBody?.velocity.dy
Cavity.physicsBody?.velocity = CGVector(dx: CGFloat(velx!) / 2, dy: CGFloat(vely!) / 2)
Cavity.physicsBody?.applyImpulse(CGVectorMake(vx, vy))
//Cavity.physicsBody?.applyImpulse(CGVectorMake(1000 / width, 1000 / height))
}
}

所以基本上我希望它是这样的,如果传递了 1 或 2 的强度,它将在所有设备上产生相同的外观结果。

最佳答案

您可以做的是使强度与屏幕尺寸相关。

strengthAdjustment = (1/375*UIScreen.mainScreen().bounds.width) 

这使用 iPhone 6 屏幕 (4.7") 宽度 (375 pts) 使强度 = 1。

iPhone 5s 的屏幕只有 320 pts,并且只需要 0.8533 的脉冲强度就可以在相同的时间内移动屏幕的宽度。

希望这对你有所帮助。

关于swift - 如何使物理脉冲在所有设备上移动相同百分比的屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32387471/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com