2016-04-10 2 views
1

Я только что познакомился с композитором, поэтому я до сих пор не понимаю, как это работает. Я пытаюсь перенести уже действующую игру в композитора, но я очень хорошо разбираюсь в этом коде в течение 5 часов и все еще не могу заставить его работать правильно - физика работает неправильно, а также не прослушиватели событий. Если кто-то захочет одолжить мне руку, я буду очень благодарен. Вот код https://github.com/DFrogBinder/Coursera-cource/blob/gh-pages/Game/Play.luaCronoa Composer

ответ

0

У вас есть несколько опечаток, которые могут вызывать некоторые из проблем физики, но я точно не знаю, какие у вас проблемы.

--> Walls and Ceiling 
    local left_Wall = display.newRect(0, 500 , 1, display.contentHeight) 
    local Right_Wall = display.newRect(display.contentWidth, 500, 1, display.contentHeight) 
    local Celling = display.newRect(300, 0, display.contentWidth, 1) 

    physics.addBody(left_Wall, "static", {bounce = 0.3}) 
    physics.addBody(Right_Wall, "static", {bounce = 0.3}) 
    -- Here, you have "Ceiling" rather than "Celling" that you defined above 
    physics.addBody(Ceiling, "static", {bounce = 0.8}) 
    sceneGroup:insert(left_Wall) 
    sceneGroup:insert(Right_Wall) 
    sceneGroup:insert(Celling) 

Здесь, вы, кажется, использовали event.x и event.y, которые, я уверен, вы смысл поставить event.target.x и event.target.y

local function moveCrate (event) 
    local Crate = event.target 
    Crate:applyLinearImpulse(0, -20, event.x, event.y) 
end 

Если у вас возникают проблемы с композитором при переключении на сцену «Игра поверх», возможно, потому, что вы не удаляете свои экранные объекты в конце этой сцены.

+0

Я исправил опечатки, насколько это касается функции moveCrate в исходном (рабочем) коде, это событие. Однако я изменил его на event.target.x и event.target.y, но без результата. Я все еще получаю сообщение об ошибке «попытка вызвать метод applyLinearImpulse» (значение nil) », другое, что физический движок не работает, поскольку ящики просто неподвижно стоят на своих точках появления в воздухе. – DFrogBinder

+0

Вы настраиваете гравитацию перед началом физики. Попробуйте вызвать свой физический.start() перед созданием или установите гравитацию и так после начала физики. Кроме того, я не верю, что вы можете вызвать composer.gotoScene() во время столкновения. –

+0

Да, заметил это буквально 2 мин назад, теперь все в порядке, спасибо – DFrogBinder