Hola amigos me gustaria implementar el move towards de game maker
pero me siento bloqueado.
se que es sacar grados y dirigir hacia alla el objeto poniendo dandole a las variables ese valor hacia el grado.
el punto es que no se que funciones trigonometricas tengo que usar.
el codigo para hacer eso, o funciones matematicas o cualquier ayuda es bienvenida.
Hola,
Bueno, depende de como quieras que sea el 'move towards'.
Puede ser un movimiento directo, apuntando el objecto hacia el objetivo, y dando una velocidad concreta.
Por ejemplo, para mover hacia donde esta el mouse:
[gml]
direction = point_direction(x,y, mouse_x, mouse_y)
speed = 15
[/gml]
Ahora si lo que quieres es tener un movimiento relativo, ahi puedes usar el motion_add, asi:
[gml]motion_add(point_direction(x,y, mouse_x, mouse_y),1)[/gml]
EDICION:
Si no quieres usar la propiedad 'speed', y quieres modificar las coordenadas directamente, puedes usar
[gml]dir=point_direction(x,y, mouse_x, mouse_y) //apunta hacia el mouse
len=5 //cuanto vas a mover el objeto
x = x + lengthdir_x(len, dir)
y = y + lengthdir_y(len, dir)[/gml]
Espero que esto ayude :)
JMG.-
bueno creo que no me di a entender
en gm ya los se utilizar, lo que pasa es que estoy utilizando otro lenguaje, por eso pedi ayuda para el codigo, no para como hacerse en GM...
te agradesco vere si me sirve lo que posteaste...
gracias
Deber?as decir de que hablar, ya que nadie de aqu? puede adivinarlo..
Ah, bueno, ahi cambia la cosa ;D
Se deben usar las funciones coseno y seno. Yo las usaba en los albores de los tiempos, hasta que descubri las lengthdir :P
Voy a desempolvar mis archivos a ver si encuentro las rutinas :)
Cita de: Masterkey en Febrero 03, 2011, 11:45:04 PM
Deber?as decir de que hablar, ya que nadie de aqu? puede adivinarlo..
claramente es tratar de hacer que el enemigo dispare a mi nave y que esa bala se vaya hacia la direccion donde esta mi nave Pricipal, pero como no lo hago en GM no puedo usar esa funcion.
por eso queria saber con cuales operaciones matematicas sacaba los grados, para hacer esa funcion
por otro lado me pondre a inversigar lo de seno y coseno
gracias gmandalf
Cita de: somnus en Febrero 04, 2011, 03:27:39 AM
Cita de: Masterkey en Febrero 03, 2011, 11:45:04 PM
Deber?as decir de que hablar, ya que nadie de aqu? puede adivinarlo..
claramente es tratar de hacer que el enemigo dispare a mi nave y que esa bala se vaya hacia la direccion donde esta mi nave Pricipal, pero como no lo hago en GM no puedo usar esa funcion.
por eso queria saber con cuales operaciones matematicas sacaba los grados, para hacer esa funcion
por otro lado me pondre a inversigar lo de seno y coseno
gracias gmandalf
Cita de: somnus en Febrero 04, 2011, 03:27:39 AM
Cita de: Masterkey en Febrero 03, 2011, 11:45:04 PM
Deber?as decir de que hablar, ya que nadie de aqu? puede adivinarlo..
claramente es tratar de hacer que el enemigo dispare a mi nave y que esa bala se vaya hacia la direccion donde esta mi nave Pricipal, pero como no lo hago en GM no puedo usar esa funcion.
por eso queria saber con cuales operaciones matematicas sacaba los grados, para hacer esa funcion
por otro lado me pondre a inversigar lo de seno y coseno
gracias gmandalf
yo lo que digo es que deber?as especificar de que lenguaje de programaci?n hablas, aunque no s? nada aparte de gm creo que ningunos son iguales. Salu2
No pude encontrar mis rutinas, lo siento :(
Pero googleando encontre esto
private function getAngle(X1:Number, Y1:Number, X2:Number, Y2:Number):Number
{
var dir = radtoDeg(Math.atan2((Y2 - Y1), (X2 - X1)));
return dir;
}
private function radtoDeg(radians:Number):Number
{
var degrees = radians * 180/Math.PI;
return degrees;
}
private function getDistance(X1:Number, Y1:Number, X2:Number, Y2:Number):Number
{
var dist = Math.sqrt(Math.pow((X2 - X1), 2) + Math.pow((Y2 - Y1), 2));
return dist;
}
private function travel(mover:Object, speed:Number, dir:Number):void
{
var dx = speed * Math.cos(dir*Math.PI/-180);
var dy = speed * Math.sin(dir*Math.PI/-180);
mover.x += dx;
mover.y -= dy;
}
Esta en java, pero creo que se entiende bien, espero :P
El resto esta aca:
http://www.kongregate.com/forums/4/topics/51230#posts-1149342
La funcion travel es la que hace la magia de mover el objeto hacia una direccion determinada.
Las otras funciones determinan el angulo hacia donde apuntar.
Espero que esto te sirva :)
JMG.-
En Python ser?a as?:
import math
def point_direction(x, y, x2, y2):
if x == x2:
return 90 + 180 * (y < y2)
if y == y2:
return 180 * (x > x2)
return 180 * (x2 < x and y2 < y or x2 < x and y2 > y) + math.degrees(math.atan((y2 - y) / (x - x2)))
def lengthdir_x(len, dir):
return math.cos(math.radians(dir)) * len
def lengthdir_y(len, dir):
return math.sin(math.radians(dir)) * -len
Y despu?s, para usarlo:
direction = point_direction(x, y, xx, yy)
x += lengthdir_x(speed, direction)
y += lenghtdir_y(speed, direction)
Ahhh, como me gusta el Python. Si fuera una mujer, me casar?a con ella.
Pero bueno, este foro es de Game Maker, lo siento pero tengo que cerrar el tema.
Busc? en internet, en otros lenguajes se usa mucho una funci?n as?, deber?a estar lleno de informaci?n. Si no encontr?s nada pod?s preguntar en un sitio como Stack Overflow (http://www.stackoverflow.com/).