2016년 1월 29일 금요일

make game as corona sdk (Fly a rocketman)(2)

주인공 움직임 만들기

앞에 기획에 이어서 이번에는 주인공 입력에 대한 부분을 구현 해보겠습니다.

중력은 physics.setGravity( 0, 0 ) 0 으로 설정합니다. 이렇게 하는 이유는 스크롤을 위해서 그렇습니다. 스크롤은 앞에서 날라오는 물체가 될텐데 중력이 적용되면 아래로 떨어지면서 날라오게됩니다.
그리고 주인공은 my.png로 대충 그립니다.
물리 관련해서는 addBody를 사용해 주며, isFixedRotation=true 설정을 해줍니다.
그러면 jump하는동안에 회전하지 않게 됩니다.
터치 핸들러에 applyForce로 y축으로 힘을 넣도록 합니다.
아래로 내려오는 중력 가속도가 없기 때문에 이벤트 루프 안에서 아래와 같은 코드를 넣습니다. 즉 프레임 마다 속도를 올려 주다가 일정 속도가 되면 속도 증가가 안되도록 합니다.
 if( vy < 100 )then
  player:setLinearVelocity( vx, vy+7 )
 end

main.lua 소스는 아래와 같습니다.

display.setStatusBar( display.HiddenStatusBar )

-- Physics
local physics = require ("physics")
physics.start()
--physics.setDrawMode("hybrid")
physics.setGravity( 0, 0 )

local player_outline = graphics.newOutline( 2, "my.png" )
local player = display.newImage("my.png")
player.x = 40
player.y = 150

physics.addBody(player,"dynamic",{ outline=player_outline,density=10 })
player.isFixedRotation = true


function flyUp(event)
 if event.phase == "began" then
     player:applyForce(0, -1500, player.x, player.y)
 end
end

Runtime:addEventListener("touch", flyUp)
 
local function eventLoop()
    local vx, vy = player:getLinearVelocity()
 if( vy < 100 )then
  player:setLinearVelocity( vx, vy+7 )
 end
end

Runtime:addEventListener( "enterFrame", eventLoop ) 

my.png





사용된 config.lua 는 아래와 같습니다.  돌아다니다가 구한 만능 config라고 합니다.
기본적으로 가로세로 정보는 아래와 같기 때문에 이미지 크기도 아래에 맞춰서 적당한 이미지를 사용하도록 하겠습니다.

            width = 320,
            height = 570,

if string.sub(system.getInfo("model"),1,4) == "iPad" then
    application = 
    {
        content =
        {
            width = 360,
            height = 480,
            scale = "letterBox",
            xAlign = "center",
            yAlign = "center",
            imageSuffix = 
            {
                ["@2x"] = 1.5,
                ["@4x"] = 3.0,
            },
        },
        notification = 
        {
            iphone = {
                types = {
                    "badge", "sound", "alert"
                }
            }
        }
    }

elseif string.sub(system.getInfo("model"),1,2) == "iP" and display.pixelHeight > 960 then
    application = 
    {
        content =
        {
            width = 320,
            height = 568,
            scale = "letterBox",
            xAlign = "center",
            yAlign = "center",
            imageSuffix = 
            {
                ["@2x"] = 1.5,
                ["@4x"] = 3.0,
            },
        },
        notification = 
        {
            iphone = {
                types = {
                    "badge", "sound", "alert"
                }
            }
        }
    }

elseif string.sub(system.getInfo("model"),1,2) == "iP" then
    application = 
    {
        content =
        {
            width = 320,
            height = 480,
            scale = "letterBox",
            xAlign = "center",
            yAlign = "center",
            imageSuffix = 
            {
                ["@2x"] = 1.5,
                ["@4x"] = 3.0,
            },
        },
        notification = 
        {
            iphone = {
                types = {
                    "badge", "sound", "alert"
                }
            }
        }
    }
elseif display.pixelHeight / display.pixelWidth > 1.72 then
    application = 
    {
        content =
        {
            width = 320,
            height = 570,
            scale = "letterBox",
            xAlign = "center",
            yAlign = "center",
            imageSuffix = 
            {
                ["@2x"] = 1.5,
                ["@4x"] = 3.0,
            },
        },
  LevelDirectorSettings = 
  {
   imagesSubFolder = ".",
   levelsSubFolder = ".",
  }
    }
else
    application = 
    {
        content =
        {
            width = 320,
            height = 512,
            scale = "letterBox",
            xAlign = "center",
            yAlign = "center",
            imageSuffix = 
            {
                ["@2x"] = 1.5,
                ["@4x"] = 3.0,
            },
        },
        notification = 
        {
            iphone = {
                types = {
                    "badge", "sound", "alert"
                }
            }
        },
  LevelDirectorSettings = 
  {
   imagesSubFolder = ".",
   levelsSubFolder = ".",
  }
    }
end

댓글 없음:

댓글 쓰기