2011-08-25 4 views
0

재미있게 (배우려면) AS3에서 임의의 지형 생성기를 생성합니다. 내가 겪고있는 문제는 어떤 종류의 타일 (잔디, 돌 등)이 어디에 있는지 알아 내려고하는 것입니다. 나는 타일이 다음과 같은 것을 말할 수 있어야하는 위치를 알아야합니다 : 위의 빈 타일과 아래의 돌이 잔디 타일을 추가하는 경우.MC 배치 위치 확인

현재는 while 루프가 진행되고 지형을 통과하는 타일과 보이지 않는 MC (objectCheck)를 추가하기 만하면이 objectCheck를 사용하여 지형을 검사 할 계획이었습니다. 하지만 루프를 만들 때 위와 아래의 타일을 확인하는 방법은 무엇입니까? 희망이 분명하다, 나는 설명 능력이 부족하다!

답변

3

가장 좋은 아이디어는 타일의 명확한 모델을 유지하고 렌더링을 위해 별도의보기 레이어를 만드는 것입니다.

예 :

interface Tile { 
    function get typeID():String; 
} 
class Water implements Tile { 
    public function get typeID():String { 
     return TYPE; 
    } 
    static public const TYPE:String = "water"; 
} 
class Sand implements Tile { 
    public function get typeID():String { 
     return TYPE; 
    } 
    static public const TYPE:String = "sand"; 
} 

지금지도는 다음과 같습니다

(이 하드,하지만 당신은 단지뿐만 아니라 그것을 생성 할 수) :

var map:Array = [ 
    [new Water, new Sand, new Sand, new Water], 
    [new Water, new Sand, new Sand, new Water], 
    [new Water, new Sand, new Sand, new Water], 
    [new Sand, new Sand, new Water, new Water] 
] 

을 그리고는 다음과 같이 표현 될 수있다 :

var colors:Object = { water: 0x0000FF, sand: 0xFFFF00 }; 
const size:Number = 20; 
for (var y:int = 0; y < map.length; y++) { 
    var row:Array = map[y]; 
    for (var x:int = 0; x < row.length; x++) { 
     beginFill(colors[Tile(row[x]).typeID]); 
     drawRect(x * size, y * size, size, size); 
    } 
} 

물론 이것은 매우 간단하지만 아이디어를 제공해야합니다.

그리고 어떤 타일이 어떤 위치에 있는지 확인하려면지도를 간단히 살펴볼 수 있습니다.

관련 문제