Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/10/2016, 14:09
Avatar de Polu
Polu
 
Fecha de Ingreso: febrero-2003
Mensajes: 135
Antigüedad: 21 años, 9 meses
Puntos: 0
"Code .lua" Restar puntos a marcador

Hola,
He creado este script para restar puntos a un juego, y funciona, pero no como yo quiero, me explico:

"initialtime" me muestra 500 en el display, a este 500 le quiero restar el tiempo transcurrido del contador "clockText" cada vez que "ball" toca "platform". Lo que intento conseguir es que si la pelota toca la plataforma y ha transcurrido 1 segundo, a 500 le descontaría 1 segundo y quedaría 499, pero como el contador sigue en marcha, si han transcurrido 3 segundos, no quiero que le reste 3 segundos a 500, quiero que se lo reste a 499 - 3 = 496, y así sucesivamente:

---SI---------|-----------NO
|
500 -1-------|---------500 -1
|
499 -3-------|---------499 -3
|
496 -5-------|---------497 -5
|
491----------|---------495



Concluyendo, la pelota seguiría botando y cada vez que bote, que reste al resultado de initialtime y no a 500.

Espero haberme explicado bien, por si alguien me puede ayudar.

Podeís probar el scrypt con el simulador de corona sdk:

Código Java:
Ver original
  1. local physics = require "physics"
  2. physics.start()
  3.  
  4. local score = 500
  5.  
  6. -------------------------------------------Initial Time--------------------------------------------------------
  7.  
  8.     local initialtime = display.newText(score, 100, 200, "Helvetica", 40)
  9.  
  10.    
  11. -------------------------------------------Accountant--------------------------------------------------------
  12.  
  13.     local clockText = display.newText("000", 100, 300, "Helvetica", 40)
  14.  
  15.     local secondsLeft = 0 -- secons
  16.     local function updateTime()
  17.     secondsLeft = secondsLeft + 1
  18.     seconds = secondsLeft % 60
  19.     timeDisplay = string.format("%03d", seconds )
  20.     clockText.text = timeDisplay
  21.    
  22. end
  23.    
  24.     countDownTimer = timer.performWithDelay( 1000, updateTime, secondsLeft )
  25.    
  26. -------------------------------------------Collision---------------------------------------------------------
  27.    
  28. local platform = display.newRect( 0, 0, 280, 30 )
  29. platform.surfaceType = "superbounce"
  30. platform.x, platform.y = display.contentCenterX, display.contentCenterY+200
  31. physics.addBody( platform, "static", { bounce=0.0, friction=0.3 } )
  32.  
  33. local ball = display.newCircle( 0, 0, 15 )
  34. ball.x, ball.y = display.contentCenterX+100, display.contentCenterY-40
  35. physics.addBody( ball, "dynamic", { bounce=0.0, radius=20 } )
  36.  
  37. local function onCollision( self, event )
  38.  
  39.    local collideObject = event.other
  40.    if ( collideObject.surfaceType == "superbounce" ) then
  41.       event.contact.bounce = 1
  42.       print(score - clockText.text)
  43.       initialtime.text = score - clockText.text
  44.    end
  45. end
  46.  
  47. ball.collision = onCollision
  48. ball:addEventListener( "collision" )

Saludos..

Última edición por Polu; 16/10/2016 a las 03:09 Razón: para explicarme mejor