(→똥피하기 예제) |
(→코드) |
||
68번째 줄: | 68번째 줄: | ||
===코드=== | ===코드=== | ||
<lnx> | <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() | ||
+ | |||
+ | 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) | ||
+ | bloccking = nil | ||
+ | end | ||
+ | end | ||
+ | end | ||
+ | end | ||
+ | |||
+ | end,true,nil,nil):run() | ||
+ | |||
+ | end | ||
+ | return m | ||
</lnx> | </lnx> | ||
− | |||
===사용 코드=== | ===사용 코드=== |
2015년 9월 2일 (수) 16:56 판
똥피하기 예제
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 |
※ 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" ] |
※ 이 예제는 매크로 등록 및 사용이 아닌, 스크립트를 불러오자마자 작동하는 예제이므로, lua 와 짝이 되는 lnx 파일은 없습니다.
결과
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() |
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) |
bloccking = nil |
end |
end |
end |
end |
end,true,nil,nil):run() |
end |
return m |
사용 코드
피니엔진 LNX 소스코드
[스크립트 실행="아니오" 파일명="EscapeShit.lua" ] |
[텍스트 내용="점수 = "+점수 아이디="점수" 크기=100] |
※ 이 예제는 매크로 등록 및 사용이 아닌, 스크립트를 불러오자마자 작동하는 예제이므로, lua 와 짝이 되는 lnx 파일은 없습니다.