문서 편집 권한이 없습니다. 다음 이유를 확인해주세요: 요청한 명령은 다음 권한을 가진 사용자에게 제한됩니다: 사용자. 문서의 원본을 보거나 복사할 수 있습니다. =똥피하기 예제= ==Lv. 1== 단순히 캐릭터는 클릭한 곳으로 움직이고, 똥은 떨어지기만 함. ===코드=== <lnx> local function m(fileName) local playerNode = pini.Sprite("player","boy.png",nil) pini:AttachDisplay(playerNode) playerNode:setAnchorPoint(0.5,0.5) playerNode:setScale(1.0,1.0) playerNode:setPosition(300,575) pini:scene():registKeyboard("escapeTouch",function(press,keyCode,arg,x,y) if keyCode == 1000 and press == 1 then playerNode:StopAction() local xPos,yPos xPos,yPos = playerNode.node:getPositionX() local moveTime = math.abs(x-xPos) / 300 playerNode:runAction(cc.MoveTo:create(moveTime,cc.p(x,25))) end end) local shitCounter = 1 pini.Timer("genShit",0.1,function(t,dt) local shitNode = pini.Sprite("shit"..tostring(shitCounter),"shit.png",nil) shitCounter = shitCounter + 1 pini:AttachDisplay(shitNode) shitNode:setAnchorPoint(0.5,0.5) shitNode:setScale(1.0,1.0) shitNode:setPosition(math.random(0,800),25) shitNode:runAction(cc.EaseIn:create(cc.MoveBy:create(3,cc.p(0,-600)),3.0)) pini.Timer(pini:GetUUID(),4,function(t,dt) shitNode:removeSelf() end,false,nil,nil):run() end,true,nil,nil):run() end return m </lnx> ※ cc.MoveTo 에 관련한 내용은 http://www.cocos2d-x.org/reference/native-cpp/V3.0rc1/de/d42/classcocos2d_1_1_move_to.html 를 참고해 주세요. ※ cc.MoveBy 에 관련한 내용은 http://www.cocos2d-x.org/reference/native-cpp/V3.0rc1/d6/d7c/classcocos2d_1_1_move_by.html 를 참고해 주세요. ※ cc.EaseIn 에 관련한 내용은 http://www.cocos2d-x.org/reference/native-cpp/V3.0rc1/dd/dde/classcocos2d_1_1_ease_in.html 를 참고해 주세요. ===사용 코드=== <lnx> [스크립트 실행="아니오" 파일명="EscapeShit.lua" ] </lnx> ※ 이 예제는 매크로 등록 및 사용이 아닌, 스크립트를 불러오자마자 작동하는 예제이므로, lua 와 짝이 되는 lnx 파일은 없습니다. ===결과=== http://i.imgur.com/cfcCYCI.gif ==Lv. 2== Lv. 1 에 더해서, 캐릭터가 똥과 충돌하면, 여태까지 생성된 똥의 갯수를 알려줌. ===코드=== <lnx> local function m(filename) local playerNode = pini.Sprite("player","boy.png",nil) pini:AttachDisplay(playerNode) playerNode:setAnchorPoint(0.5,0.5) playerNode:setScale(1.0,1.0) playerNode:setPosition(300,575) pini:scene():registKeyboard("escapeTouch",function(press,keyCode,arg,x,y) if keyCode == 1000 and press == 1 then if playerNode then playerNode:StopAction() local xPos xPos = playerNode.node:getPositionX() local moveTime = math.abs(x-xPos) / 300 playerNode:runAction(cc.MoveTo:create(moveTime,cc.p(x,25))) end end end) local shitRootNode = pini.Node("shitRoot") pini:AttachDisplay(shitRootNode) shitRootNode:setAnchorPoint(0.5,0.5) shitRootNode:setScale(1.0,1.0) shitRootNode:setPosition(0,0) local shitCounter = 1 local bloccking = pini.XVM:stop() -- LNX 코드의 진행을 중단합니다. pini.Timer("shitFrameMove",0.1,function(t,dt) local shitNode = pini.Sprite("shit"..tostring(shitCounter),"shit.png",nil) shitCounter = shitCounter + 1 pini:AttachDisplay(shitNode, "shitRoot") shitNode:setAnchorPoint(0.5,0.5) shitNode:setScale(1.0,1.0) shitNode:setPosition(math.random(0,800),25) shitNode:runAction(cc.EaseIn:create(cc.MoveBy:create(3,cc.p(0,-600)),3.0)) pini.Timer(pini:GetUUID(),4,function(t,dt) shitNode:removeSelf() end,false,nil,nil):run() local shits = shitRootNode:children() local playerXCoor = -100 if playerNode then playerXCoor = playerNode.node:getPositionX() end for i=1,#shits do local posX = shits[i].node:getPositionX() local posY = shits[i].node:getPositionY() if posY < -500 and posY > -550 then if math.abs(playerXCoor - posX) < 40 then if bloccking then pini:DetachDisplay(playerNode) playerNode = nil _LNXG["점수"] = shitCounter -- "점수" 라는 변수에 값을 대입합니다. pini.XVM:resume(bloccking) -- 정지하면서 얻은 아이디로, LNX 진행을 재개합니다. bloccking = nil end end end end end,true,nil,nil):run() end return m </lnx> ===사용 코드=== <lnx> [스크립트 실행="아니오" 파일명="EscapeShit.lua" ] [텍스트 내용="점수 = "+점수 아이디="점수" 크기=100] </lnx> ※ 이 예제는 매크로 등록 및 사용이 아닌, 스크립트를 불러오자마자 작동하는 예제이므로, lua 와 짝이 되는 lnx 파일은 없습니다. ※ 이 예제에서는 게임이 진행중인 동안 EscapeShit.lua 에서 멈춰있다가, 게임오버되면 진행되는 예제입니다. ===결과=== http://i.imgur.com/qXFqIXQ.gif PiniApi:EscapeShitExample 문서로 돌아갑니다.