
物理学
|
239
let explosionOffset =
CGVector(dx: bodyPosition.x - point.x,
dy: bodyPosition.y - point.y)
2.
对
explosionOffset
进行单位化。也就是计算出向量的长度(即大小),然后
将向量除以长度。
要计算向量的长度,可以将向量每条边平方后相加,再开方。
let explosionDistance =
sqrt(explosionOffset.dx * explosionOffset.dx +
explosionOffset.dy * explosionOffset.dy)
然后,将
explosionOffset
除以向量长度,再乘以爆炸威力。这样,所有受影响
的物体都会受到同样的爆炸威力,无论它们的位置远近:
let explosionDistance =
sqrt(explosionOffset.dx * explosionOffset.dx +
explosionOffset.dy * explosionOffset.dy)
3.
最后
,
将计算出的力应用到每个物体:
body.applyForce(explosionForce)
7.17
根据设备方向改变重力
问题
我们要在玩家旋转设备时使重力的方向也发生改变。
解决方案
首先,在项目导航窗口顶部,选中项目名称,在
General
标签页中,拉到“
Device
Orientation
”处,关掉除“
Portaint
”以外的所有选项。这样就保证我们的 ...