Как оживить (перемещать по умолчанию) и неодушевить (сделать неподвижным при нажатии) сталкивающиеся объекты - PullRequest
0 голосов
/ 19 мая 2011

Эй, устал этот новый код, чтобы оживить объекты (здесь пузырьки) и сделать их неподвижными, используя спрайты.Код выглядит следующим образом:

local ui = require("ui")

local gameUI = require("gameUI")
local easingx  = require("easingx")
require "sprite"

display.setStatusBar( display.HiddenStatusBar )

local physics = require("physics")
physics.start()
physics.setScale( 60 )

local backgroundPortrait = display.newImage( "sky.png", 0, 0 )
local backgroundLandscape = display.newImage( "sky.png", 80, 80 )
backgroundLandscape.isVisible = false
local disp = backgroundLandscape

local function selectBubble( event )
    local tapped = event.target  --event.target is how Corona points to the tapped bubble
    if ( tapped.bubbleSelected == false ) then
        local vx,vy = tapped:getLinearVelocity()
        tapped.xVel = vx  --stores the current velocity into bubble's "xVel" variable
        tapped.yVel = vy  --likewise for yVel
        tapped:setLinearVelocity( 0,0 ) --set bubble's velocity to 0!
        tapped.currentFrame = (3)
        tapped.bubbleSelected = true
    elseif ( tapped.bubbleSelected == true ) then
        tapped:setLinearVelocity( tapped.xVel, tapped.yVel )  --read previous velocity and set
        tapped.bubbleSelected = false
    end
end

--BUBBLE1
local bubble1 = sprite.newSprite( spriteSet1 )
bubble1.x = 100
bubble1.y = 100
physics.addBody(bubble1, {bounce=0.04,  filter = bubbleCollisionFilter})
bubble1:setLinearVelocity( 2, 4 )
bubble1:addEventListener( "tap", selectBubble )
bubble1.bubbleSelected = false
bubble1:prepare("bubble")
bubble1:play()

--BUBBLE2
local bubble2 = sprite.newSprite( spriteSet1 )
bubble2.x = 210
bubble2.y = 20
physics.addBody(bubble2, {bounce=0.05,  filter = bubbleCollisionFilter})
bubble2:setLinearVelocity( 2, 4 )
bubble2:prepare("bubble")
bubble2:play()

--BUBBLE3
local bubble3 = sprite.newSprite( spriteSet1 )
bubble3.x = 100
bubble3.y = 17
physics.addBody(bubble3, {bounce=0.02,  filter = bubbleCollisionFilter})
bubble1:setLinearVelocity( 1, 2 )
bubble3:prepare("bubble")
bubble3:play()

--BUBBLE4
local bubble4 = sprite.newSprite( spriteSet1 )
bubble4.x = 310
bubble4.y = 20
physics.addBody(bubble4, {bounce=0.4,  filter = bubbleCollisionFilter})
bubble4:setLinearVelocity( 2, 4 )
bubble4:prepare("bubble")
bubble4:play()

Проблема, во-первых, в том, что код не работает.Во-вторых, хотя пузырь меняет цвет при нажатии (этот цвет для большинства одинаков).Тем не менее, каждый пузырь имеет уникальное письмо на нем.Как заставить это работать.Пожалуйста, помогите.

1 Ответ

1 голос
/ 20 мая 2011

Трудно понять, что именно вы спрашиваете, потому что ваш вопрос довольно расплывчатый (что означает «оживить»? И что вы подразумеваете под «не похоже на работу») объясните эти термины, потому что они могут означать нескольковещи), но я думаю, что вы хотите установить физические тела на «статические» в прослушивателе событий крана.Обратитесь сюда к тому, о чем я говорю:

http://developer.anscamobile.com/reference/index/bodybodytype

Так что внутри функции selectBubble () вы должны напечатать что-то вроде tapped.bodyType = "static"

...