Script GlovePIE + FPS = Girar Continuamente

Duda Solucionada, Dejo el Script para Jugar a un FPS usando la barra sensora para apuntar, aqui =D



Ultimo retoque completo, ahora ya va perfecto =D
//WiiFPS by Pho
//IMPORTANTE Tiene 2 modos de cursor, Normal y FPS, Botones uno y dos para alternar


wiimote.Led1 = true

debug =wiimote.RawForceY+ " Lastx " + var.lastx + " Lasty " + var.lasty + " VarOn: " + var.on + " Movmouse: " + var.movmouse + " MovmouseY: " + var.movmouseY + " pointerX " + wiimote.PointerX*1280  + " Cursor PosX " + mouse.CursorPosY +"vartime" + var.time + " pointerY " + wiimote.PointerY*1024

//Mouse clic izq = boton B del mando
mouse.LeftButton =wiimote.B

//Guarda unas cuantas variables
if wiimote.One then
var.lastx = wiimote.PointerX*1280
var.lasty = wiimote.PointerY*1024
var.on = 1
var.time = 10
var.resY = wiimote.PointerY*1024
endif

//Al apretar (1) guarda a donde estoy apuntando, coje a donde apunto despues y lo resta
//Esta resta son los pixels k mueve el cursor =D
//Sin los wait no va =/ pero a 10 ms va fluidillo =D

if var.lastx != wiimote.PointerX*1280 and var.on != 0 then

   var.movmouse = 2*((wiimote.PointerX*1280)-var.lastx)

   wait 20ms
   var.lastx = wiimote.PointerX*1280
   mouse.CursorPosX = mouse.CursorPosX + var.movmouse

endif

//Al apuntar a los bordes de la pantalla continua girando
if wiimote.PointerX*1280 < 0 and var.On = true then
  mouse.CursorPosX = mouse.CursorPosX - 50
  wait var.time ms
endif

if wiimote.PointerX*1280 >1280 and var.On = true then
  mouse.CursorPosX = mouse.CursorPosX + 50
  wait var.time ms
endif


if var.lasty != wiimote.PointerY*1024 and var.on != 0 then

   var.movmouseY = 2*((wiimote.PointerY*1024)-var.lastY)

   wait var.time ms
   var.lastY = wiimote.PointerY*1024
   mouse.CursorPosY = mouse.CursorPosY + var.movmouseY
   endif

   if wiimote.PointerY*1024 < 0 and var.On = true then
  mouse.CursorPosY = mouse.CursorPosY - 50
  wait var.time ms
endif

if wiimote.PointerY*1024 >1024 and var.On = true then
  mouse.CursorPosY = mouse.CursorPosY + 50
  wait var.time ms
endif

//Aumenta o reduce el tiempo de espera, 10 ms por defecto
if pressed(wiimote.Up) then
var.Time = var.time+1
endif
if pressed(wiimote.down) then
var.Time = var.time-1
endif

key.W = Wiimote.Nunchuk.JoyY < -0.4 // Adelante

key.S = Wiimote.Nunchuk.JoyY > 0.4 // Atras

key.A = Wiimote.Nunchuk.JoyX < -0.4 // Paso Lateral izquierdo

key.D = Wiimote.Nunchuk.JoyX > 0.4 // Paso Lateral derecho

mouse.LeftButton = Wiimote.b
mouse.RightButton = wiimote.Nunchuk.ZButton

if wiimote.Two then
var.on = 0
endif
if var.On = 0 then
mouse.CursorPosX = wiimote.PointerX*1280
mouse.CursorPosy = wiimote.Pointery*1024
endif
Mouse.DoubleClickTime = Wiimote1.A




----- MENSAJE ORIGINAL------

Tengo un problemilla al hacer el script del GlovePIE

wiimote.Led1 = true
Mouse.VirtualDesktopX = Wiimote.PointerX
mouse.VirtualDesktopY = Wiimote.PointerY

W = Wiimote.Nunchuk.JoyY < -0.4

A = Wiimote.Nunchuk.JoyX < -0.4

S = Wiimote.Nunchuk.JoyY > 0.4

D = Wiimote.Nunchuk.JoyX > 0.4

Mouse.LeftButton = Wiimote1.B

Con esto, puedo moverme por todo el PC sin ningun problema. Pero cuando me voy a un FPS el desgraciado en vez de mirar hacia donde apunto, lo que hace es que como ve que el cursor no esta centrado, pongamos que esta aputando un poco hacia la derecha, se cree que es como si estuviese moviendo el raton continuamente hacia la derecha (esto provoca un giro continuo sobre mi mismo) y es muy inestable de controlar, ya que as de ir centrado, mover MUY poquito, y cuando estas en la posicion volver a centrar (vamos que no se puede jugar bien y es una lastima) a ver si se os ocurre como solucionarlo =D

Salu2 =3~~

PD:Lo he puesto en scene de wii, pk es con el mando.. si creeis que va en PC movedlo plz =D[CODE]
ni idea de glovepie, pero comprueba que no diferencie mayusculas de minusculas pq en la 2ª linea usas "Mouse" y en la 3ª "mouse" no se si da lo mismo (pro en java no, no es lo mismo)

Tendrías que explicar un poco que hacen esas funciones y si usan IR o q pq ni idea, te podríamos ayudar los q no sabemos mucho de glove pie

Creo que usas el nunchuk para mover al personaje y supongo que el IR para mover la cámara, mira lo de las mayúsculas y minúsculas pq fallos más tontos he visto.

Si no es eso no se donde puede fallar pq tp es tan complejo tu código, ya dirás cosas
A ver, por partes xDD ahora ya se un poco mas de cosas del GlovePIE y eso y para empezar el script del otro post sirve, pero estaria mejor con otras funciones, da igual no es lo importante ahora. el problema con los FPS es que el cursor SIEMPRE esta en el medio de la pantalla, cuando lo movemos, mueve la camara y despues vuelve al centro (si cojeis un FPS windowed y en el glovepie poneis
debug = Mouse.CursorPosX + "," + Mouse.CursorPosY
podreis verlo en el debug)

entonces tengo ya un script k me lo solucionaria (creo) pero ahora el problema que tengo es que quiero que al apretar el boton 1 del mando de wii me guarde en un variable el valor de wiimote.PointerX y no lo consigo T_T (si debe de ser una chorrada pero no lo veo xDDDD) pk al soltar el boton uno, la variable vuelve a su valor inicial a ver si me podeis ayudar =D


Salu2 =3
Por favor publica tu script pho
Esto ya va mejor, ahora puedes girar y lo controlas decentemente (probadlo y decidme que tal =D) pero falta el eje Y (mirar arriba y abajo) que me da un poco de fallo y esta comentado, si quereis probar a ver si os va, descomentadlo (obvio no? xD) para que funcione teneis que apretar el boton 1 del wiimote apuntando al centro de la pantalla, o no hara nada!
Se aceptan modificaciones
PD: el codigo ha sido remodificado varias veces asi que quizas haya algo que sobra y se me ha pasado por alto

//WiiFPS by Pho
wiimote.Led1 = true

debug = " Lastx " + var.lastx + " Lasty " + var.lasty + " VarOn: " + var.on + " Movmouse: " + var.movmouse + " MovmouseY: " + var.movmouseY + " pointerX " + wiimote.PointerX*1280  + " Cursor PosX " + mouse.CursorPosX +"vartime" + var.time + " pointerY " + wiimote.PointerY*1024

//Mouse clic izq = boton B del mando
mouse.LeftButton =wiimote.B

//Guarda unas cuantas variables
if wiimote.One then
var.lastx = wiimote.PointerX*1280
var.lasty = wiimote.PointerY*1024
var.on = 1
var.time = 10
var.resY = wiimote.PointerY*1024
endif

//Al apretar (1) guarda a donde estoy apuntando, coje a donde apunto despues y lo resta
//Esta resta son los pixels k mueve el cursor =D
//Sin los wait no va =/ pero a 10 ms va fluidillo =D

if var.lastx != wiimote.PointerX*1280 and var.on != 0 then

   var.movmouse = 2*((wiimote.PointerX*1280)-var.lastx)

   wait 20ms
   var.lastx = wiimote.PointerX*1280
   mouse.CursorPosX = mouse.CursorPosX + var.movmouse
   wait var.time ms
   mouse.CursorPosX = 1280/2
endif

//Al apuntar a los bordes de la pantalla continua girando
if wiimote.PointerX*1280 < 0 and var.On = true then
  mouse.CursorPosX = mouse.CursorPosX - 50
  wait var.time ms
endif

if wiimote.PointerX*1280 >1280 and var.On = true then
  mouse.CursorPosX = mouse.CursorPosX + 50
  wait var.time ms
endif

if var.lasty != wiimote.PointerY*1024 and var.on != 0 then

   var.movmouseY = 2*((wiimote.PointerY*1024)-var.lastY)

   wait var.time ms
   var.lastY = wiimote.PointerY*1024
   mouse.CursorPosY = mouse.CursorPosY + var.movmouseY
   wait var.time ms
   mouse.CursorPosY = 1024/2
   endif

   if wiimote.PointerY*1024 < 0 and var.On = true then
  mouse.CursorPosY = mouse.CursorPosY - 50
  wait var.time ms
endif

if wiimote.PointerY*1024 >1024 and var.On = true then
  mouse.CursorPosY = mouse.CursorPosY + 50
  wait var.time ms
endif

//Aumenta o reduce el tiempo de espera, 10 ms por defecto
if pressed(wiimote.Up) then
var.Time = var.time+1
endif
if pressed(wiimote.down) then
var.Time = var.time-1
endif

key.W = Wiimote.Nunchuk.JoyY < -0.4 // Adelante

key.S = Wiimote.Nunchuk.JoyY > 0.4 // Atras

key.A = Wiimote.Nunchuk.JoyX < -0.4 // Paso Lateral izquierdo

key.D = Wiimote.Nunchuk.JoyX > 0.4 // Paso Lateral derecho

mouse.LeftButton = Wiimote.B
mouse.RightButton = wiimote.Nunchuk.ZButton


Salu2 =3

EDIT: me olvidaba, esta puesto para una resolucion de 1280x1024, si quereis cambiarla, modificad todos los 1280 y 1024 que veais por vuestra resolucion de pantalla. MAs tarde ya lo hare con variables para mas ocmodidad =D

EDIT2: Retocao, en principio a mi me fallaba que si ponia el cursor en la mitad de mi resolucion se quedaba subiendo.... nose pk, pero ahora ya me va bien, si no os va el eje Y retocad el valor de centrar el mouse en Y (525 en este script) quizas le falta un poco de fluidez al jugar, pero es jugable en el Portal al menos =D ahora ya es añadir teclas etc.. =D si encontrais algun fallo o se os ocurre como mejorarlo avisadme =D

EDIT3: vale, ya e encontrado el problema del edit2 todo era por jugar windowed, en full screen si que es la mitad de la resiolucion T_T tanto para eso xDDDD Probadop en Half Life2 y bueno, cuesta un poquillo , pero es jugable xDD (TOdo por culpa de los wait, sin los que por otra parte no va el script, a ver si se os ocurre algo para eso =(
enga que siga que dentro de poco estoy en el counter jugando con mi wiimote.


GRACIASSS saludos
5 respuestas