我试图做出一个shmup并试图制作一个特定的"子弹模式"。基本上,我有一个敌人发射了一些围绕圆圈移位的子弹。让我们说那个子弹圈是向右的。接下来,我希望圆圈能够自行折叠,所以我为x&添加了第二个冲动。子弹的速度。基本上这样,被射击的子弹的形状在它行进时看起来像这样(我希望这种伪劣的符号化是有道理的):
O o • o O
有效。
然后我只想让它折叠它的垂直定位,而不是水平定位所以看起来像这样:
O — O
我也可以这样做。但是,如果我尝试对角地拍摄这个圆圈,或者在完全水平或垂直方向以外的方向拍摄它会稍微分解。
以下是我正在使用的代码,其中包含clusterGrowthX& Y是我遇到麻烦的部分。解决方案可能正好盯着我,但我现在无法弄明白。有问题,请问。感谢。
for(var j:int = 0; j < _info.clusterAmount; j++)
{
var around : Number = _info.angle - (_info.clusterRange/2) + (_info.clusterRange/_info.clusterAmount/2) + j * (_info.clusterRange/_info.clusterAmount);
var xOff : Number = (Math.cos(around) * _info.clusterRadius);
var yOff : Number = (Math.sin(around) * _info.clusterRadius);
var bullet = new _info.bulletShape(_info);
bullet.x = startPoint.x + xOff;
bullet.y = startPoint.y + yOff;
if(_info.dParent is PlayerControl)
{
bullet.x += Math.cos(_info.angle) * 40;
bullet.y += Math.sin(_info.angle) * 40;
}
var sign : Number = (_info.angle < 0) ? -1 : 1;
trace(Math.cos(around),Math.sin(around));
bullet.info.vx += Math.cos(around) * _info.clusterGrowthX;
bullet.info.vy += Math.sin(around) * _info.clusterGrowthY;
bullet.rotation = _info.angle * 180 / Math.PI;
_info.dLevel.addChild(bullet);
}
答案 0 :(得分:1)
您需要做的是让clusterGrowth沿任意角度增加和减少。
那么我们如何沿任意角度投射一个点?
var amountOfOffset:Number = 10// how far along the angle you want to go.
var angleInDegrees:Number = 45; // this is the angle you want it to expand on.
var angleInRadians:Number = angleInDegrees * 0.0174532925;
clusterGrowthX = amountOfOffset * cos(angleInRadians);
clusterGrowthY = amountOfOffset * sin(angleInRadians);
那应该是你。
你所要求的与在圆圈上找到一个点非常相似: Find the point with radius and angle
答案 1 :(得分:0)
Tween / Tweenlite库。修复所有问题^ _ ^简单,简单,干净,优化天堂。