2015년 6월 20일 토요일

corona sdk 에서 tiled 사용하기 06 - Using Objects to Do Cool Stuff

https://github.com/anthonymoralez/lime-tutorials/tree/master/tutorial-06


NOTE: This tutorial is copied from the original at OutlawGameTools.com

06 - Using Objects to Do Cool Stuff(Object 사용하여 재미난거 하기)

Difficulty: Beginner
Duration: 20 minutes 이번에는 20분이나 걸리네요
Description:
Objects are a very important part of Tiled, they allow you to create things such as checkpoints, spawnpoints, pickups and much more. In this tutorial we will see how easy they are to use and then in the next tutorial we will see how they can be used to help set up your physical world.

Step 1: Creating an object layer (Oject 레이어를 하나 추가합니다.)

Creating an object layer is straight forward, simply right click the Layers panel and select Add Object Layer..., this will create a new blank layer much like we did with tile layers:
이 부분은 설명 필요없이 그림만 있으면 어떻게 하는지 알 수 있을것 같네요.
New Layer

Step 2: Creating your first object(당신의 첫번째 object 생성하기)

Object layers can be quite fiddly to work with at first but you will get used to them over time, to create your object just click somewhere in the tile grid, ensuring that the object layer is selected.
Object 레이어는 좀 작업이 귀찮은 편에 속합니다. object 레이어를 선택하고 grid에서 당신이 놓아야할 위치에 찍으면 됩니다. 회색 원 또는 사각형 아이콘이 당신의 새로운 object가 됩니다. object레이어를 선택하면 위쪽에 동그라미 원등을 선택하는 툴이 활성화 되는데. Tiled 버전에 따라 다릅니다. 아래 그림과 같이 되지는 않지만 비슷한 형태가 나옵니다.
New Object
That little grey circle/square icon is your new object, exciting isn�t it?

Step 3: Giving it some properties (프로퍼티 주기)

To give your object some properties you will need to once again bring up the Properties window, do so by right clicking the object and selecting Object Properties�
Property Window
As you can see in the image, you are able to give each object a Name and Type value as well as as many properties as you like. You are also able to set its X and Y position as well as its Width and Height.
생성했던 object를 선택하면 프로퍼티를 수정이 가능하고 위치크기가 조정이 가능합니다.
아래와 같이 이름과 type을 변경해봅니다.
For now we will just skip the position and size data and just add a Name and Type like so:
Object Name & Type
As well as just one property:
그리고 playerImage guy.png 정보도 넣습니다.
Object Properties

Step 4: Using it in your game (게임에서 위에꺼 사용하기)

With our object created and setup it is now time to use it in our game, now we could do as we have previously done and get access to this object by looping through all the objects but we can do this a much more interesting way with a lot less code, namely using object listeners.
To do this we must first load up our map but then before we create the visual we need to place the following code. It is vital that this is done before the visual is created.
아래와 같은 코드를 넣으면되는데, 주의할점이 있습니다.
map을 화면에 보이기 전에 즉 local visual = lime.createVisual(map) 보다 앞에 넣어야 합니다. 드리고 타일 애니메이션을 시키기 위해서는 화면을 모두 보인뒤 tile.sprite:play() 코드를 사용해야 합니다.

-- Create our listener function
local onObject = function(object)
    -- Create an image using the properties of the object
    display.newImage(object.playerImage, object.x, object.y)
end

-- Add our listener to our map linking it with the object type
map:addObjectListener("PlayerSpawn", onObject)
In Game
What we have seen is that it is very easy to do stuff with objects, obviously what I have shown you is a very basic idea but the feature itself can be used for so much more.
Resources:
Completed Project: git clone https://github.com/anthonymoralez/lime-tutorials
Guy Image: Download


꼭 알아두세요.
1. lime은 프로젝트 최상위 폴더에 lime폴더 통째로 복사해서 넣습니다.
2. Layer는 높은쪽이 위쪽 레이어입니다.
3. Tiled에서 tileset의 프로퍼티는 이름과 값으로 구성됩니다.
4. 화면에 보이게한뒤 물리 설정을 해야합니다. local visual = lime.createVisual(map) => local physical = lime.buildPhysical(map)
5. 타일셋에 물리 객체는 HasBody로 합니다.
6. 타일셋 import/export로 현재 저장된 프로퍼티를 다른 맵파일(tmx)과 쉽게 공유할 수 있습니다.
7. 타일을 간단하게 애니메이션 시키는 방법,IsAnimated, frameCount=?,frameTime 이 있지만 오류 발생합니다. 사용 하려면 코드 수정해야 합니다.
8. 타일 에니메이션 또다른 방법은 IsAnimated tile.sprite:setSequence("animation1") 이걸 이용하세요
9. PlayerSpawn 만들기 : object layer사용 tool을 이용하여 위치 설정 Type을 PlayerSpawn 프로퍼티 playerImage=? 추가 후 코드 추가 map:addObjectListener("PlayerSpawn", onObject)

댓글 없음:

댓글 쓰기