un petit jeu avec rotation suivre la sourie ....
100% Mathématique.
un pti jeux
bla bla bla bla pour compléter les...
Source / Exemple :
import flash.display.MovieClip;
import flash.events.Event;
//tangante (
//trace(rad2deg(Math.atan2(1,1)));// donne 45
//atan2 c'est la tangante -1 pour avoir la valeur de l'angle ici en radian
/*var hand:MovieClip = new Mc();
hand.x=stage.stageWidth/2;
hand.y=stage.stageHeight/2;
addChild(hand);*/
var thex:Number;
var they:Number;
var dis : Number;
var myangle : Number;
// detection du deplacement
var T:Timer=new Timer(1000,0);
T.addEventListener(TimerEvent.TIMER,fun);
T.start();
function fun(evt:TimerEvent):void{
thex = mouseX;
they = mouseY;
}
var To:Timer=new Timer(250,0);
To.addEventListener(TimerEvent.TIMER,funo);
To.start();
function funo(evt:TimerEvent):void{
if(thex == mouseX && they==mouseY){
//trace("still");
addEventListener(Event.ENTER_FRAME,onloop,false,0,true);
aze_mc.snake.play();
}
if (thex!=mouseX && they!=mouseY){
//trace("deplace");
removeEventListener(Event.ENTER_FRAME,onloop);
aze_mc.snake.stop();
}
}
/*addEventListener(Event.ENTER_FRAME,onloop,false,0,true);
function onloop (e:Event):void{
//aze_mc.rotation=getangle(aze_mc.x,aze_mc.y,mouseX,mouseY);//angle
//aze_mc.x=mouseX-80;
//aze_mc.y=mouseY-80;
}*/
// oorientation e
function getangle(x1:Number,y1:Number,x2:Number,y2:Number):Number{
var radians:Number = Math.atan2(y1-y2,x1-x2);
return rad2deg(radians);
}
function rad2deg(rad:Number):Number{
return rad*(180/Math.PI);
}
stage.addEventListener(MouseEvent.MOUSE_MOVE, CheckDirection);
function CheckDirection(e:MouseEvent)
{
myangle = getangle(aze_mc.x,aze_mc.y,mouseX,mouseY);
if(Math.abs(myangle)>90 &&Math.abs(myangle) < 180 ){
aze_mc.rotation=myangle;
aze_mc.rotationX=180;
}
if(Math.abs(myangle) <90 ||Math.abs(myangle)>180 ){
aze_mc.rotation=getangle(aze_mc.x,aze_mc.y,mouseX,mouseY);
aze_mc.rotationX=0;
}
trace("myangle : ",myangle);
e.updateAfterEvent();
}
//deplacement ver but
function onloop(e:Event):void{
aze_mc.x+= velFriction(aze_mc.x,mouseX,60);
aze_mc.y+= velFriction(aze_mc.y,mouseY,60);
//calcul de distance etre mouse et snake
function getdistance(x1:Number, y1:Number , x2:Number, y2:Number):Number{
var d1:Number=x2-x1;
var d2:Number=y2-y1;
return Math.sqrt(d1*d1+d2*d2);
}
//trace(getdistance(aze_mc.x,aze_mc.y,mouseX,mouseY))
dis = getdistance(aze_mc.x,aze_mc.y,mouseX,mouseY);
if (dis<200){
//trace("ca approche");
}
if (dis<120){
//trace("danger");
}
if (dis<60){
//trace("attaque");
}
}
function velFriction(origine:Number,destination:Number,Coef:Number):Number{
return (destination-origine)/Coef;// Coef qui 20 dans cet example c'est 1/la vitesse pour rejoindre la distination
}
;
Conclusion :
si on a une base mathématique - physique assez fort == tous est fesable