简单缓动:
sprite.x += (targetX - sprite.x) * easing; sprite.y += (targetY - sprite.y) * easing;
简单弹性:
vx += (targetX - sprite.x) * spring; vy += (targetY - sprite.y) * spring; sprite.x += (vx *= friction); sprite.y += (vy *= friction);
偏移弹性运动:
var dx:Number = sprite.x - fixedX; var dy:Number = sprite.y - fixedY; var angle:Number = Math.atan2(dy, dx); var targetX:Number = fixedX + Math.cos(angle) * springLength; var targetY:Number = fixedX + Math.sin(angle) * springLength;
距离碰撞检测:
// 从 spriteA 和 spriteB 开始 // 如果使用一个空白影片,或影片没有半径(radius)属性 // 可以用宽度与高度除以 2。 var dx:Number = spriteB.x - spriteA.x; var dy:Number = spriteB.y - spriteA.y; var dist:Number = Math.sqrt(dx * dx + dy * dy); if (dist < spriteA.radius + spriteB.radius) { // 处理碰撞 }
多物体碰撞检测:
var numObjects:uint = 10; for (var i:uint = 0; i < numObjects - 1; i++) { // 使用变量 i 提取引用 var objectA = objects[i]; for (var j:uint = i+1; j < numObjects; j++) //使用变量 j 提取引用 var objectB = objects[j]; // 在 objectA 与 objectB 之间进行碰撞检测 } }