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
local physics = require "physics" physics.start() local score = 500 -------------------------------------------Initial Time-------------------------------------------------------- local initialtime = display.newText(score, 100, 200, "Helvetica", 40) -------------------------------------------Accountant-------------------------------------------------------- local clockText = display.newText("000", 100, 300, "Helvetica", 40) local secondsLeft = 0 -- secons local function updateTime() secondsLeft = secondsLeft + 1 seconds = secondsLeft % 60 timeDisplay = string.format("%03d", seconds ) clockText.text = timeDisplay end countDownTimer = timer.performWithDelay( 1000, updateTime, secondsLeft ) -------------------------------------------Collision--------------------------------------------------------- local platform = display.newRect( 0, 0, 280, 30 ) platform.surfaceType = "superbounce" platform.x, platform.y = display.contentCenterX, display.contentCenterY+200 physics.addBody( platform, "static", { bounce=0.0, friction=0.3 } ) local ball = display.newCircle( 0, 0, 15 ) ball.x, ball.y = display.contentCenterX+100, display.contentCenterY-40 physics.addBody( ball, "dynamic", { bounce=0.0, radius=20 } ) local function onCollision( self, event ) local collideObject = event.other if ( collideObject.surfaceType == "superbounce" ) then event.contact.bounce = 1 print(score - clockText.text) initialtime.text = score - clockText.text end end ball.collision = onCollision ball:addEventListener( "collision" )
Saludos..