Maso Blog
Flash, Actionscript, Animation, Game, Multimedia, User Interface,Mobile...
2004/11/30
IsometricTile矩形排列
一般IsometricTile排列會以菱形呈現,但某些情形下會需要矩形排列。若單純改成矩形排列其實是更加容易的,不過遊戲開發通常仍需知道其虛擬座標,所以反而是座標轉換上較為麻煩。下面為菱形(左)跟矩形(右)的比較
單純排成矩形其實比菱形更容易,就用一般水平垂直排列法即可,只需注意偶數列要縮半格就是了。
game.initNew = function() {
//屬性
this.spaceX = 26;
this.spaceY = 13;
this.count = 0;
//造圖
var mapMc = _root.createEmptyMovieClip("mapMc", 1);
mapMc._x = 100;
mapMc._y = 100;
var numX = 6;
var numY = 9;
var gy = 0;
while (gy<numy ) {
var lx = numX;
var xd = gy%2;
if (xd != 0) {
lx--;
}
var gx = 0;
while (gx<lx) {
this.count++;
var tileMc =mapMc.attachMovie("tile", "tile"+this.count, this.count);
tileMc._x = xd*this.spaceX+this.spaceX*gx*2-1;
tileMc._y = this.spaceY*gy;
tileMc.tf.text =gx+","+gy;
gx++;
}
gy++;
}
};
排出來就像下圖
但通常遊戲開發還需要知道其虛擬座標值,才能方便做人物移動、碰撞等,因此要做個座標轉換的動作。而這轉換也不困難,稍微觀察一下排列的邏輯即能導出公式
var tx = gx+Math.ceil(gy/2);
var ty = Math.floor(gy/2)-gx;
結果如下圖
.
原始檔下載
沒有留言:
張貼留言
較新的文章
較舊的文章
首頁
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言