Febrero 27, 2012, 03:57:48 PM Ultima modificación: Febrero 28, 2012, 05:34:31 PM por Sdo.Ivan
vereis en un objeto control para la view tengo este pequeño codigo

en el step

view_object[0]=soldado_01;
view_angle[0]=-(soldado_01.direction-90);


con esto la view esta centrada en el player y el player siempre mira hacia arriba....me preguntaba? como hago para que el player este,en vez de en el centro de la view, mas cerca del borde inferior de la pantalla...he probado cosas pero madre mia,la que se lia cuando rotas el player jejejeje alguna ayuda?saludos y gracias.

EDIT:bueno teniendo en cuenta que tengo una resolucion de 1440x900 he sustituido el codigo de arriba por este

view_xview[0]=soldado_01.x+cos(degtorad(direction))-720;
view_yview[0]=soldado_01.y-sin(degtorad(direction))-450;
view_angle[0]=-(soldado_01.direction-90);


de esta forma igualmente mi soldado sigue estando en el centro de la pantalla...la cuestion es que seria ideal que estubiera asi

view_xview[0]=soldado_01.x+cos(degtorad(direction))-360;
view_yview[0]=soldado_01.y-sin(degtorad(direction))-450;
view_angle[0]=-(soldado_01.direction-90);


asi queda el soldado donde quiero pero...teniendo en cuenta que uso

///rotar derecha

if(keyD){
direction-=2 image_angle=direction;}

///rotar izquierda

if(keyA){
direction+=2 image_angle=direction;}


para rotar al soldado......cuando lo hago pasa algo un poco extraño....la view rota desde el centro...con lo cual mi soldado siempre mira hacia adelante(que eso es lo que quiero) pero describe una circunferencia alrededor del centro de la view cuando lo roto.....socorro........alguna idea.gracias

Primero que nada, si vas a hacer eso tienes que desactivar la opción de que la view siga a un objeto en el editor de rooms. Por cierto hace unos días me hice un script simple que hace que la view se valla un poco hacia donde apunta tu personaje por si es eso lo que quieres.

si si...esa casilla esta en no_object...adjunto imagenes para que veais lo que quiero...con el primer codigo(el del primer post) me queda asi como en la primera imagen...el player en el centro y realmente todo  funca a la perfeccion...mi intencion es que quede como en la segunda imagen , el player mucho mas abajo para que asi pueda aprobechar todo el espacio que tiene delante para ver mas.El problema está en que haciendolo de esta manera,mientras camina hacia adelante,atras y a los lados(sin variar su image_angle ni su direction) todo va bien,pero cuando hacemos rotar al player,el player rota bien pero a su vez la view rota manteniendo su eje de rotacion en el centro de la pantalla,como le digo que su eje de rotacion sea el del player manteniendo el player en la posicion que quiero...espero no haberte liado mas ;) mil gracias

P.D: lo de tu script....claro que me interesa...pero haber si resuelvo esto antes...y luego ya me lo muestras....gracias y salud

Hasta donde sé el eje de rotación de la view no se puede cambiar, podrías poner algunas imágenes de lo que quieres que suceda con la view cuando el jugador rote para ver si se me ocurre algo o a alguien mas.

#4 Febrero 28, 2012, 01:09:29 PM Ultima modificación: Febrero 28, 2012, 01:11:42 PM por Sdo.Ivan
Cita de: brunoxzx en Febrero 28, 2012, 10:22:18 AM
Hasta donde sé el eje de rotación de la view no se puede cambiar, podrías poner algunas imágenes de lo que quieres que suceda con la view cuando el jugador rote para ver si se me ocurre algo o a alguien mas.

veras....mi intencion es que el player siempre mire hacia arriba...con lo cual...si el player esta en el centro todo va bien...porque todo se mueve sobre el mismo eje central(el player y la view) rotamos el player y como hemos dicho que la posicion del player y la view,y el angulo del player y de la view sean los mismos todo va como la seda.Las dos cosas se mueven sobre los mismos ejes.Mi problema aparece cuando intento que el player no esté en el centro sino mas abajo...los ejes ya son distintos.Evidentemente,si no hago rotar al player,todo va bien ya que el eje x e y del player son los mismos que los ejes x e y de la view,el problema aparece cuando hago rotar al player.El player rota sobre su eje,y la view rota sobre su eje,que en este caso es el centro de la view,y para que todo fuera bien la view deberia rotar sobre un eje situado justo donde esta el player uffffff que lio no? jejejej adjunto dos imagenes para que todavia os lieis mas


lo que quiero es como si fueran los movimientos de  un 3rd person shooter en 3d visto desde arriba,quitando el raton para rotar y usando las teclas descritas en las fotos.gracias

Hola, aquí tengo tu respuesta (si te entendí bien), es de hecho muy sencillo de realizar, ya habías logrado hacer que la camara se centrara en el personaje mediante el uso de:


//Es aproximado, no es exactamente lo que habías hecho
view_xview[0] = (obj_Char.x)-320;
view_yview[0] = (obj_Char.y)-240;
view_angle[0] = -obj_Char.direction+90;


esto centra la camara en el personaje, pero tu lo necesitas en un costado, así que lo unico que tienes que hacer es calcular un punto mas allá donde el personaje esta mirando.

:-\ , es muy sencillo, se hace mediante los usos de seno y coseno


view_xview[0] = (obj_Char.x+(cos(degtorad(obj_Char.direction)))*200)-320;
view_yview[0] = (obj_Char.y-(sin(degtorad(obj_Char.direction)))*200)-240;
view_angle[0] = -obj_Char.direction+90;


Esto pone al personaje en el costado inferior y la camara rota junto a el...


De cualquier modo te adjunto el editable



Saludos y cualquier cosa avisas.

Checa mi canal de Youtube para tutoriales y charlas sobre desarrollo de videojuegos.


perfecto Jucarave....o deberia decir: Maestro Jucarave ;)

con lo cual,deduzco que el 200 es la distancia,cuanto mas grande sea,mas lejos del centro movere el player,verdad? igualmente mil gracias por que ya funciona de maravilla.Gracias a todos