I wanna make simple game, but I have some trouble...
please help me to make bound of object, in order that I can find like
a hitTest

sorry I'm newbie (please give me the solution)
thx... T_T


// import containers
import away3d.containers.*;
// import core library
import away3d.core.base.*;
// import file format loaders
import away3d.loaders.*;
//import math objects
import away3d.core.math.*;
//import event object
import away3d.events.*;
import away3d.primitives.*;
import away3d.cameras.*;

import flash.events.KeyboardEvent;
import flash.ui.*;

var rotCamera:Boolean;
var firstClick:Boolean;
var lastMouseX:Number = mouseX;
var lastMouseY:Number = mouseY;

var moves:Boolean;
var mov:Number;
var rnd:Number;
var rnd2:Number;
var tembak:Boolean;
var pos:Number;
var posrnd:Number;
var kon:Number;

var AItembak:Boolean;
var mov2:Number;
var pos2:Number;
var posrnd2:Number;
var kon2:Number;


var movP:Number;



// create a 3D-viewport
var camera = new HoverCamera3D({zoom:3, focus:300, distance:1000});
// create a 3D-viewport
camera.tiltangle = 40;
camera.targettiltangle = 40;
camera.mintiltangle =  20;
camera.maxtiltangle = 50;
camera.yfactor = 1;
camera.steps = 7;


var view:View3D = new View3D({camera:camera, x:300, y:300});
// add viewport to the stage
addChild(view);

var peluruP:Object3D = new Sphere({material:"red", radius:15,
segmentsW:9, segmentsH:6, y:30, x:0, z:0});
// add the peluruP to the scene
view.scene.addChild(peluruP);

var sphere2:Object3D =new Sphere({material:"red", radius:15, segmentsW:
9, segmentsH:6, y:30, x:0, z:0});
// add the sphere to the scene
//view.scene.addChild(sphere2);
var peluruAI:Object3D = new ObjectContainer3D({x:420, z:-420},
sphere2);
view.scene.addChild(peluruAI);

/*var cube1:Object3D = new Cube({material:"box", x:100, y:40,width:80,
height:80, depth:80});
view.scene.addChild(cube1);
var cube2:Object3D = new Cube({material:"box",scaling:0.8, z:300,x:
300, y:40, width:80, height:80, depth:80});
view.scene.addChild(cube2);
var cube3:Object3D = new Cube({material:"box",scaling:0.8, x:-100, z:
100, y:40, width:80, height:80, depth:80});
view.scene.addChild(cube3);
var cube4:Object3D = new Cube({material:"box",scaling:0.8, z:-300, y:
40, width:80, height:80, depth:80});
view.scene.addChild(cube4);
var cube5:Object3D = new Cube({material:"box",scaling:0.8, z:
300,x:-300, y:40, width:80, height:80, depth:80});
view.scene.addChild(cube5);
var cube6:Object3D = new Cube({material:"box",scaling:0.8, x:400, y:
40,width:80, height:80, depth:80});
view.scene.addChild(cube6);
var cube7:Object3D = new Cube({material:"box",scaling:0.8, z:-400, y:
40, x:400, width:80, height:80, depth:80});
view.scene.addChild(cube7);
var cube8:Object3D = new Cube({material:"box",scaling:0.8, x:-300,
z:-300, y:40, width:80, height:80, depth:80});
view.scene.addChild(cube8);

var cubes:Object3D = new ObjectContainer3D({x:0}, cube1, cube2, cube3,
cube4, cube5, cube6, cube7, cube8);
view.scene.addChild(cubes);*/

var plane:Object3D = new Plane({material:"map", name:"map", x:0, y:0,
z:0, width:1000, height:1000, segmentsW:6, pushback:true});
view.scene.addChild(plane);

var tank:Object3DLoader = Obj.load("resources/tank.obj",
{material:"tank_texture", name:"tank", scaling:0.1, y:0, x:0, z:0,
loadersize:300});
view.scene.addChild(tank);

var tank2:Object3DLoader = Obj.load("resources/tank.obj",
{material:"tank2_texture", name:"tank2", scaling:0.1, y:0, x:0, z:0,
loadersize:300});
tank2.rotationY = 90;
view.scene.addChild(tank2);

var tank3:Object3DLoader = Obj.load("resources/tank.obj",
{material:"tank2_texture", name:"tank3", scaling:0.1, y:0, x:0, z:0,
loadersize:300});
tank3.rotationY = 90;
view.scene.addChild(tank3);

var tank4:Object3DLoader = Obj.load("resources/tank.obj",
{material:"tank2_texture", name:"tank4", scaling:0.1, y:0, x:0, z:0,
loadersize:300});
tank4.rotationY = 90;
view.scene.addChild(tank4);


var maps:Object3D = new ObjectContainer3D({x:0}, plane);
view.scene.addChild(maps);

var enemy:Object3D = new ObjectContainer3D({z:-420}, tank2);
view.scene.addChild(enemy);

var enemy2:Object3D = new ObjectContainer3D({x:420, z:-420}, tank3);
view.scene.addChild(enemy2);

var enemy3:Object3D = new ObjectContainer3D({x:-420, z:-420}, tank4);
view.scene.addChild(enemy3);

var object:Object3D = new ObjectContainer3D({z:420},tank);
object.rotationY = -90;
view.scene.addChild(object);

/*var mesh:Mesh;
mesh = tank as Mesh;
var enemy:Object3D = new ObjectContainer3D(mesh.clone(), {x:150,
mouseEnabled:false});
view.scene.addChild(enemy);*/

// add the loader object to the scene
//loader2.rotationY = 45;
//view.scene.addChild(loader2);



// position camera
view.scene.rotationY = 45;
view.camera.position = new Number3D(1000, 900, 1000);


view.camera.lookAt(object.position);


function onKeyDownEvent(event:KeyboardEvent):void {
        if (moves==true) {

                if (event.keyCode == Keyboard.SPACE) {
                        peluruP.x = object.x;
                        peluruP.z = object.z;
                        tembak = true;

                }
                if (event.keyCode == Keyboard.LEFT) {
                        object.rotationY -=90;
                        trace(object.rotationY);
                }
                if (event.keyCode == Keyboard.RIGHT) {
                        object.rotationY +=90;
                        trace(object.rotationY);
                }
                if (event.keyCode == Keyboard.UP) {

                        if ((movP==1)&&(object.x > -420)) {
                                object.x -= 10;
                        } else if ((movP ==2)&&(object.z < 450)) {
                                object.z +=10;
                        } else if ((movP ==3)&&(object.x < 420)) {
                                object.x +=10;
                        } else if ((movP ==4)&&(object.z > -380)) {
                                object.z -=10;
                        }
                        //                camera.focus = camera.focus + 5;
                }
                if (event.keyCode == Keyboard.DOWN) {


                        if ((movP==1)&&(object.x < 420)) {
                                object.x += 10;
                        } else if ((movP ==2)&&(object.z > -380)) {
                                object.z -=10;
                        } else if ((movP ==3)&&(object.x > -420)) {
                                object.x -=10;
                        } else if ((movP ==4)&&(object.z < 450)) {
                                object.z +=10;
                        }
                        //                camera.focus = camera.focus - 5;

                }
        }
}

// every frame


peluruAI.visible= false;
peluruP.visible= false;
addEventListener(Event.ENTER_FRAME, onEnterFrame);
function onEnterFrame(event:Event):void {
        enemy.visible=true;
        object.visible=true;

        /*if (object.hitTestObject(enemy)) {
        trace("hit");
        }*/

        if (((object.x==enemy.x)&&(enemy.z+5>=object.z>=enemy.z-5))||
((object.x==enemy.x)&&(enemy.z+5>=object.z>=enemy.z-5))||
((object.z==enemy.z)&&(enemy.x+5>=object.x>=enemy.x-5))||
((object.z==enemy.z)&&(enemy.x+5>=object.x>=enemy.x-5))) {
                enemy.visible=false;

        }
        //fungsi PLAYER tembak
        if ((tembak==true)&&(movP==1)) {
                peluruP.visible= true;
                peluruP.x = object.x;
                peluruP.z = object.z;
                //peluruP.x +=5;
                trace(enemy.x);
                trace(peluruP.x);

        }
        if ((tembak==true)&&(movP==2)) {
                peluruP.x = object.x;
                peluruP.z = object.z;
                //peluruP.z +=(getTimer() / 100)*5;
                //peluruP.z +=5;
        }
        if ((tembak==true)&&(movP==3)) {
                peluruP.x = object.x;
                peluruP.z = object.z;
                //peluruP.x +=(getTimer() / 100)*5;
                //peluruP.x +=5;
        }
        if ((tembak==true)&&(movP==4)) {
                peluruP.x = object.x;
                peluruP.z = object.z;
                //peluruP.z -=5;
        }

        if (rotCamera) {
                if (firstClick == true) {
                        firstClick = false;
                        lastMouseX = view.mouseX;
                        lastMouseY = view.mouseY;

                        trace("frist click");
                }
                //
                var dragX = (view.mouseX - lastMouseX);
                var dragY = (view.mouseY - lastMouseY);

                //
                lastMouseX = view.mouseX;
                lastMouseY = view.mouseY;

                camera.targetpanangle += dragX;
                camera.targettiltangle += dragY;
                camera.hover();
                camera.rotationY +=10;
        } else {
                /*
                view.camera.position = new Number3D(1000, 900, 1000);
                view.camera.lookAt(object.position);
                */
        }
        // AI
        rnd=Math.floor(Math.random()*5);
        //trace(rnd);
        rnd2=Math.floor(Math.random()*5);

        moves = true;
        //tembak=true;



        if (moves==true) {
                mov=kon;
                mov2=kon2;
                //AI.1
                posrnd=Math.round((Math.sin(rnd)*30))*10;
                pos = Math.round(posrnd);
                //trace(pos);
                //trace(posrnd);
                //

                if ((mov ==2)&&(enemy.z < 420)) {
                        //enemy.z +=5;
                        kon=2;
                        if ((enemy.x==pos)||(enemy.z==pos)) {
                                AItembak=true;
                                kon = Math.floor(rnd);
                                kon;
                                //trace(rnd);
                        }
                } else {
                        kon = Math.floor(rnd);
                }
                if ((mov==1)&&(enemy.x > -400)&&(enemy.x < 400)) {
                        //enemy.x -= 5;
                        kon=1;
                        if ((enemy.x==pos)||(enemy.z==pos)) {
                                AItembak=true;
                                kon = Math.floor(rnd);
                                kon;
                                //trace(rnd);
                        }
                } else {
                        kon = Math.floor(kon);
                        kon;
                }
                if ((mov ==3)&&(enemy.x > -400)&&(enemy.x < 400)) {
                        //enemy.x +=5;
                        kon=3;
                        if ((enemy.x==pos)||(enemy.z==pos)) {
                                AItembak=true;
                                kon = Math.floor(rnd);
                                kon;
                                //trace(rnd);
                        }
                } else {
                        kon = Math.floor(kon);
                        kon;
                }
                if ((mov ==4)&&(enemy.z > -350)) {
                        //enemy.z -=5;
                        kon=4;
                        if ((enemy.x==pos)||(enemy.z==pos)) {
                                AItembak=true;
                                kon = Math.floor(rnd);
                                kon;
                                //trace(kon);
                        }
                } else {
                        kon = Math.floor(kon);
                        kon;
                }
                if ((mov==1)||(mov==2)||(mov==3)||(mov==4)||(enemy.x==pos)||
(enemy.z==pos)||((enemy.z==object.z+10)||(enemy.x==object.x+10))) {
                        if (kon == 1) {
                                enemy.rotationY = 270;
                                enemy.x -=5;
                                mov=1;
                        } else if (kon ==2) {
                                enemy.rotationY = 0;
                                enemy.z +=5;
                                mov=2;
                        } else if (kon ==3) {
                                enemy.rotationY = -270;
                                enemy.x +=5;
                                mov=3;
                        } else if (kon==4) {
                                enemy.rotationY = 180;
                                enemy.z -=5;
                                mov=4;
                        }
                        //fungsi AI tembak
                        if (AItembak==true) {
                                peluruAI.visible= true;
                                peluruAI.x = enemy.x;
                                peluruAI.z = enemy.z;

                                if (mov==1) {
                                        peluruAI.x = enemy.x;
                                        peluruAI.z = enemy.z;
                                        //peluruAI.x -=(getTimer() / 100)*5;
                                        //peluruAI.x -=(getTimer() / 100)*5;
                                        if 
((peluruAI.x==object.x)&&(peluruAI.z==object.z)) {
                                                object.visible=false;
                                        }
                                } else if (mov==2) {
                                        peluruAI.x = enemy.x;
                                        peluruAI.z = enemy.z;
                                        if 
((peluruAI.x==object.x)&&(peluruAI.z==object.z)) {
                                                object.visible=false;
                                        }
                                        //peluruAI.z +=(getTimer() / 100)*5;
                                        //sphere.handle.z +=5;
                                } else if (mov==3) {
                                        peluruAI.x = enemy.x;
                                        peluruAI.z = enemy.z;
                                        if 
((peluruAI.x==object.x)&&(peluruAI.z==object.z)) {
                                                object.visible=false;
                                        }
                                        //peluruAI.x +=(getTimer() / 100)*5;
                                        //peluruAI.handle.x +=5;
                                } else if (mov==4) {
                                        peluruAI.x = enemy.x;
                                        peluruAI.z = enemy.z;
                                        if 
((peluruAI.x==object.x)&&(peluruAI.z==object.z)) {
                                                object.visible=false;
                                        }
                                }//peluruAI.z -=(getTimer() / 100)*5;
                        }//peluruAI.handle.z -=5;
                }
                //AI.2
                posrnd2=Math.round((Math.sin(rnd)*30))*10;
                pos2 = posrnd2;
                //trace(pos2);
                if ((mov2 ==2)&&(enemy2.z < 420)) {
                        //enemy.z +=5;
                        kon2=2;
                        if ((enemy2.x==pos2)||(enemy2.z==pos2)) {

                                kon2 = Math.floor(rnd2);
                                kon2;
                                //trace(rnd);
                        }
                } else {
                        kon2 = Math.floor(rnd2);
                }
                if ((mov2==1)&&(enemy2.x > -400)&&(enemy2.x < 400)) {
                        //enemy.x -= 5;
                        kon2=1;
                        if ((enemy2.x==pos2)||(enemy2.z==pos2)) {

                                kon2 = Math.floor(rnd2);
                                kon2;
                                //trace(rnd);
                        }
                } else {
                        kon2 = Math.floor(kon2);
                        kon2;
                }
                if ((mov2 ==3)&&(enemy2.x > -400)&&(enemy2.x < 400)) {
                        //enemy.x +=5;
                        kon=3;
                        if ((enemy2.x==pos2)||(enemy2.z==pos2)) {

                                kon2 = Math.floor(rnd2);
                                kon2;
                                //trace(rnd);
                        }
                } else {
                        kon2 = Math.floor(kon2);
                        kon2;
                }
                if ((mov2 ==4)&&(enemy2.z > -350)) {
                        //enemy.z -=5;
                        kon2=4;
                        if ((enemy2.x==pos2)||(enemy2.z==pos2)) {

                                kon2 = Math.floor(rnd2);
                                kon2;
                                //trace(kon);
                        }
                } else {
                        kon2 = Math.floor(kon2);
                        kon2;
                }
                if 
((mov2==1)||(mov2==2)||(mov2==3)||(mov2==4)||(enemy2.x==pos2)||
(enemy2.z==pos2)) {
                        if (kon2 == 1) {
                                enemy2.rotationY = 270;
                                enemy2.x -=5;
                                mov2=1;
                        } else if (kon2 ==2) {
                                enemy2.rotationY = 0;
                                enemy2.z +=5;
                                mov2=2;
                        } else if (kon2 ==3) {
                                enemy2.rotationY = -270;
                                enemy2.x +=5;
                                mov2=3;
                        } else if (kon2==4) {
                                enemy2.rotationY = 180;
                                enemy2.z -=5;
                                mov2=4;
                        }
                }
        }

        // handler keyboard
        stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDownEvent);
        tembak = false;
        AItembak = false;
        moves = true;



        if ((object.rotationY == 360) || (object.rotationY == -360) ||
(object.rotationY == 0)) {
                object.rotationY = 0;
                movP=1;
        } else if ((object.rotationY == 90) || (object.rotationY == -270)) {
                movP=2;
        } else if ((object.rotationY == 180) || (object.rotationY == -180)) {
                movP=3;
        } else if ((object.rotationY == 270) || (object.rotationY == -90)) {
                movP=4;
        }
        // rerender viewport on each frame



        view.render();
}



var hit:MovieClip = new MovieClip();
hit.graphics.beginFill(0xFF0000);
hit.graphics.drawRect(0, 0, 500, 500);
hit.graphics.endFill();
addChild(hit);
hit.alpha = 0;

hit.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
function mouseDownHandler(evt:MouseEvent):void {
        rotCamera = true;

}
hit.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
function mouseUpHandler(evt:MouseEvent):void {
        rotCamera = false;
        firstClick = true;

}
hit.addEventListener(MouseEvent.MOUSE_WHEEL, onMouseEvent);
function onMouseEvent(event:MouseEvent):void {
        trace(camera.zoom);
        var dir = (event.delta > 0) ? .5 : -.5;
        camera.zoom = Math.max(2, Math.min(8, (camera.zoom+dir)));
        //camera.distanceTo(-40);
}

Reply via email to