Ну вот код пульки

Код AS3:
package objects.weapons
{
import animation.AntActor;
import flash.display.Sprite;
import flash.events.Event;
import flash.geom.Point;
import flash.geom.Rectangle;
import flash.globalization.NumberParseResult;
import flash.text.TextField;
import gameClass.Game;
import objects.Entity;
import objects.Hero;
import objects.enemies.Enemy;
import objects.enemies.Tnt;
import objects.shop.Box;
import objects.shop.Coinsbox;
import screens.InGame;
import utils.ageVector;
public class Bullet extends Entity
{
private var vectorEnd: ageVector;
private var vectorStart: ageVector;
private var angle:Number;
private var angle2:Number;
private var bulletBang:AntActor;
private var bullet:AntActor;
private var speed: int = 10;
private var power:int = 5;
private var text:TextField;
private var i:int = 0;
public function Bullet(vec: ageVector,point:Point,_speed:int,_power:int)
{
super();
vectorEnd = new ageVector();
vectorEnd.x = vec.x;
var k:int;
if(InGame.entities[0] as Hero){
var percent:int = (InGame.entities[0] as Hero).getStamina();
var value: int =20- 20* (percent/100);
k = randRange(vec.y-value,vec.y+value);
vectorEnd.y = k;
}else{
k = randRange(vec.y,vec.y);
vectorEnd.y = k;
}
speed = _speed;
power = _power;
angle = Math.atan2(vectorEnd.x-point.x,vectorEnd.y-point.y);
angle2 = Math.atan2(vectorEnd.y-point.y,vectorEnd.x-point.x);
vectorStart = new ageVector(this.x, this.y);
this.addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
}
private function onAddedToStage(event:Event):void
{
this.removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
//this.addEventListener(Event.ENTER_FRAME, update);
createAnimation();
createHitBox(2, 2, 5,5);
isBullet = true;
bullet.rotation = angle2;
}
public override function update():void
{
//text.text = String(i++);
if(x>720 || x<0 || y>550 ||y<0){
this.kill();
setIndex();
}
this.x += Math.sin(angle) * speed;
this.y += Math.cos(angle) * speed;
checkCollision();
checkCollisionWithBox();
}
private function checkCollisionWithBox():void{
for(var i:int= 1;i< InGame.entities.length;i++){
if(InGame.entities[i] && InGame.entities[i].isBox){
if(InGame.entities[i].isDead ==false ){
var paddleRect:Rectangle = this.returnHitBox().getBounds( this );
var enemy:Entity;
if((InGame.entities[i] as Coinsbox))
enemy = (InGame.entities[i] as Coinsbox);
if((InGame.entities[i] as Box))
enemy = (InGame.entities[i] as Box);
var tempSprite:Sprite = enemy.returnHitBox();
var ballRect:Rectangle = tempSprite.getBounds( this );
var isColliding:Boolean = paddleRect.intersects( ballRect );
if(isColliding && !isDead){
bulletBang.visible = true;
bulletBang.play();
isDead = true;
bullet.visible = false;
speed = 0;
InGame.entities[i].getDamage(power);
break;
}
}
}
}
}
private function checkCollision():void
{
for(var i:int= 1;i< InGame.entities.length;i++){
if(InGame.entities[i] && InGame.entities[i].isEnemy){
if(InGame.entities[i].isDead ==false ){
var paddleRect:Rectangle = this.returnHitBox().getBounds( this );
var enemy:Entity;
if((InGame.entities[i] as Enemy) != null)
enemy = (InGame.entities[i] as Enemy);
else {
enemy = (InGame.entities[i] as Tnt);
}
var tempSprite:Sprite = enemy.returnHitBox();
var ballRect:Rectangle = tempSprite.getBounds( this );
var isColliding:Boolean = paddleRect.intersects( ballRect );
if(isColliding && !isDead){
bulletBang.visible = true;
bulletBang.play();
isDead = true;
bullet.visible = false;
speed = 0;
InGame.entities[i].getDamage(power);
break;
}
}
}
}
}
private function createAnimation():void
{
bullet = new AntActor();
bullet.addAnimFromCache("bullet"); // Добавляем анимацию
bullet.stop();
bullet.animSpeed =0.5 // Скорость анимаци
addChild(bullet);
bulletBang = new AntActor();
bulletBang.addAnimFromCache("bullet_bang"); // Добавляем анимацию
bulletBang.repeat = false;
bulletBang.addEventListener(Event.COMPLETE, endShootCallback);
bulletBang.stop();
bulletBang.visible= false;
this.addChild(bulletBang);
text = new TextField();
addChild(text);
}
private function setIndex():void{
InGame.bullets.splice(InGame.bullets.indexOf(this), 1);
}
public function endShootCallback(e:Event):void
{
this.visible = false;
bulletBang.stop();
this.kill();
setIndex();
}
}
}