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
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.