Comunidad de diseño web y desarrollo en internet online

Nesecito un mano muy grande.

Citar            
MensajeEscrito el 11 Ene 2006 06:17 am
Bueno me presento soy nuevo por acá mi nombre es Ezequiel...


Bueno esto creo que es muy largo asi que espero que tengan paciencia y me puedan ayudar..

Les comento .... Esto trata de un juego de futbol, en el cual hay 2 jugadores Principales los cuales se manejan con las flechas uno y con W,S,D,A el otro... El tema es asi hay una pelota .. y 3 jugadores de cada equipo , cada jugador(PC) patea a un jugar random.. en direccion contraria osea haci el arco del otro.. Lo unico que hacen es acercarce a la pelota y patearla en un angulo RANDOM.
Los personajes principales se mueve y pueden patear..

Ahora bien el juego esta visto de arriba muy arriba y los jugadores se mueven girando y avanzando .... Ahora bien , lo que yo quiero es hacer que los jugadores(pc) no pateen la pelota haci el lado contrario sino que me la pasen a mi al Principal..

Nose si se entiende.. Pero aqui dejo los codigos de todo..
Las variables que utilize son un poco raras , tengo muy mala organizacion.



EL JUGADOR PRINCIPAL TIENE EL SIGUIENTE CODIGO.

Código :

onClipEvent (enterFrame) {
   if (_root.pelota.hitTest(this)) {
      _root.quien = 1;
      _root.pelota._x = this._x;
      _root.pelota._y = this._y;
      if (Key.isDown(71)) {
         _root.pelota.speed += 10;
         _root.pelota._rotation = this._rotation;
      }
   } else {
      _root.quien = "nola";
   }
   if (Key.isDown(87)) {
      play();
      speed += 1.5;
   } else {
      speed--;
   }
   if (speed<=0) {
      speed = 0;
   }
   if (speed>=1.8) {
      speed = 1.8;
   }
   if (Key.isDown(65)) {
      _rotation -= 5;
   }
   if (Key.isDown(68)) {
      _rotation += 5;
   }
   _x += Math.sin(_rotation*(Math.PI/180))*speed;
   _y += Math.cos(_rotation*(Math.PI/180))*speed*-1;
   if (this._y<=44) {
      this._y = 44;
   }
   if (this._y>=334) {
      this._y = 334;
   }
   if (this._x<=19) {
      this._x = 19;
   }
   if (this._x>=518) {
      this._x = 518;
   }
}


Ese seria el Jugador principal , el que uno maneja..


Ahora , la maquina de tu mismo equipo..
El que patea en un angulo RANDOM

Código :

onClipEvent (enterFrame) {
   jua = random(180);
   updateAfterEvent();
   if (_root.quien == 0 and _root.pelota.hitTest(_root.miarea2) or _root.quien == "nola" and _root.pelota.hitTest(_root.miarea2)) {
      xdif = _root.pelota._x-this._x;
      ydif = _root.pelota._y-this._y;
      angulo = Math.atan2(ydif, xdif);
      this._x += 1.5*Math.cos(angulo);
      this._y += 1.5*Math.sin(angulo);
      this.play();
   }
   if (_root.pelota.hitTest(this)) {
      _root.pelota.speed += random(5);
      _root.pelota._rotation = jua;
   }
   angulo = angulo*180/Math.PI;
   this._rotation = angulo;
}



Y por ultimo la PELOTA (BALON)

Código :

onClipEvent (enterFrame) {
   _rotation -= speed;
   _rotation += speed;
   speed *= .87;
   _x += Math.sin(_rotation*(Math.PI/180))*speed;
   _y += Math.cos(_rotation*(Math.PI/180))*speed*-1;
   if (this._y<=76.7) {
      this._y = 76.7;
   }
   if (this._y>=329) {
      this._y = 329;
   }
   if (this._x<=7) {
      this._x = 7;
   }
   if (this._x>=532.5) {
      this._x = 532.5;
   }
}


Espero que lo entiendan y me puedan ayudar muchisimas gracias desde ya un saludo enorme y gracias de antemano.

eZe

Por ZeXeR

3 de clabLevel



 

msie
Citar            
MensajeEscrito el 11 Ene 2006 03:09 pm
pues halla la posicion de tu jugador principal, hallas el ángulo y se la pasas....

Por _CONEJO

BOFH

7639 de clabLevel

17 tutoriales
21 articulos

 

firefox
Citar            
MensajeEscrito el 11 Ene 2006 08:46 pm
Te aseguro que lo probe pero no funciona , un error se produce que hace que no pase la pelota , nose .. Si podrias ayudarme con un poco de codigo seria de mucha ayuda.

Por ZeXeR

3 de clabLevel



 

msie
Citar            
MensajeEscrito el 12 Ene 2006 05:40 am
Porfavor nesecito de SU AYUDAAAA !

Por ZeXeR

3 de clabLevel



 

msie
Citar            
MensajeEscrito el 12 Ene 2006 01:10 pm
1.- se paciente, a nadie le pagan por contestar

2.- cambia estas lineas
xdif = _root.pelota._x-this._x;
ydif = _root.pelota._y-this._y;
por estas otras

xdif = _root.tuJugadorPrincipal._x-this._x;
ydif = _root.tuJugadorPrincipal._y-this._y;

Por _CONEJO

BOFH

7639 de clabLevel

17 tutoriales
21 articulos

 

firefox
Citar            
MensajeEscrito el 12 Ene 2006 11:22 pm
Si yo cambi oesas dos lineas , el jugador no iria a buscar la pelota...
Iria a buscarme a mi ! , lo que yo quiero es que busque la pelota y una vez que HITTEST la pate en una direccion a la que estoy yo

Por ZeXeR

3 de clabLevel



 

msie
Citar            
MensajeEscrito el 13 Ene 2006 02:34 pm
tu código es jodidamente caótico, de hecho no se ni porqué funciona, por ejemplo ...

onClipEvent (enterFrame) {
_rotation -= speed;
_rotation += speed;

con eso la rotacion queda igual... para que las tienes?
que tiene que ver la rotacion con la velocidad?

_x += Math.sin(_rotation*(Math.PI/180))*speed;
_y += Math.cos(_rotation*(Math.PI/180))*speed*-1;
y calculamos su posicion por medio de la rotacion... ufff ufff mejor usar una variable para guardar los ángulos.

Además
onClipEvent (enterFrame) {

Apenas se usa, se cambió la forma de programar


De todas formas ::

_root.pelota._rotation = jua;

esa línea cámbiala por

xdif = _root.tuJugadorPrincipal._x-this._x;
ydif = _root.tuJugadorPrincipal._y-this._y;
anguloj = Math.atan2(ydif, xdif);
_root.pelota._rotation = anguloj;

Por _CONEJO

BOFH

7639 de clabLevel

17 tutoriales
21 articulos

 



Ultima edición por _CONEJO el 14 Ene 2006 08:03 am, editado 1 vez

firefox
Citar            
MensajeEscrito el 14 Ene 2006 06:09 am
Bueno la verdad no conzco la nueva forma de programa yo hace mucho que no toco flash y ahora me puse devuelta tendre que ponerme al dia .. y en cuanto al codigo te aseguro que anda todo perferctamente , y fijate en el mismo tutorial de esta pag que esta echo como yo hize la forma de que la pelota gira y avanza.
mira :
http://img366.imageshack.us/my.php?image=prosocceravanze017am.swf

la pelota rota... y se disapara hacia la direccion que esta rota osea a un angulo..

Y en cuanto a esto
xdif = _root.tuJugadorPrincipal._x-this._x;
ydif = _root.tuJugadorPrincipal._y-this._y;
anguloj = Math.atan2(ydif, xdif);
_root.pelota._rotation = anguloj;
Si yo hago eso , lo que va a hacer va a calcular la la distancia y el angulo del jugador que yo manejo y va ir el jugador de mi equipo hacia mi .. yo quiero que primero valla a la pelota y después la pelota se dispare hacia mi , no que el jugador venga hacia mi , me entiendeS? .Gracias.[/url]

Por ZeXeR

3 de clabLevel



 

msie
Citar            
MensajeEscrito el 14 Ene 2006 08:04 am
creo que quien no me entendió fuistes tu ...

ICEM4N escribió:

_root.pelota._rotation = jua;

esa línea cámbiala por

xdif = _root.tuJugadorPrincipal._x-this._x;
ydif = _root.tuJugadorPrincipal._y-this._y;
anguloj = Math.atan2(ydif, xdif);
_root.pelota._rotation = anguloj;


Esa parte viene AQUI :
//Vemos si tocamos la pelota....
//Le pasamos el angulo random "jua" del principio a la pelota
if (_root.pelota.hitTest(this)) {
_root.pelota.speed += random(5);
_root.pelota._rotation = jua;
}


por eso cambiamos esa línea por::

if (_root.pelota.hitTest(this)) {
_root.pelota.speed += random(5);
xdif = _root.tuJugadorPrincipal._x-this._x;
ydif = _root.tuJugadorPrincipal._y-this._y;
anguloj = Math.atan2(ydif, xdif);
_root.pelota._rotation = anguloj;
}

Por _CONEJO

BOFH

7639 de clabLevel

17 tutoriales
21 articulos

 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.