【发布时间】:2015-01-22 21:53:49
【问题描述】:
所以我刚刚建立了一个系统,其中一个物体从一个移动的物体向另一个物体发射。
我现在遇到的问题是它当前计算的方式,它根据被射击的物体与最初发射时另一个物体之间的距离使子弹移动得更慢。
视频讲解。
我希望子弹停留的速度:http://gyazo.com/3682d9adde0ed08aa675702d190c0d46.mp4
物体关闭时的速度: http://gyazo.com/553b0fb82d89a84f206ea00a9dc8daf0.mp4
这是从黄色物体发射的子弹的代码以及所有计算:
private function createBullet(): void {
_pcos = Math.cos((this.rotation) * Math.PI / 180);
_psin = Math.sin((this.rotation) * Math.PI / 180);
_startX = this.x - _barrelLength * _pcos;
_startY = this.y - _barrelLength * _psin;
_endX = Init._player.x + 1 * _pcos + Math.random() * _bulletSpread - _bulletSpread * .5;
_endY = Init._player.y + 1 * _psin + Math.random() * _bulletSpread - _bulletSpread * .5;
var tempBullet: MovieClip = new Bullet();
tempBullet.vx = (_endX - _startX);
tempBullet.vy = (_endY - _startY);
tempBullet.x = _startX;
tempBullet.y = _startY;
tempBullet.rotation = -(Math.atan2(Init._player.x - this.x, Init._player.y - this.y)) * 180 / Math.PI;
tempBullet.maxDistance = _maxDistance;
_bullets.push(tempBullet);
stage.addChild(tempBullet);
}
public function updateBullets(): void {
var i: int;
var tempBullet: MovieClip;
for (i = 0; i < _bullets.length; i++) {
tempBullet = _bullets[i];
tempBullet.x += tempBullet.vx / _bulletSpeed;
tempBullet.y += tempBullet.vy / _bulletSpeed;
}
}
}
如果有人可以帮助计算,将不胜感激,谢谢。
【问题讨论】:
标签: performance actionscript-3 rotation