2012-04-19 61 views
0

我對編碼相當陌生。我想知道是否有方法,所以當我用鑰匙移動我的物體時,我可以讓相機保持在我的物體上,這樣我就可以繞過比我的視口更大的世界。攝像頭下面的對象

我試圖移動世界各地,而不是我的目標,但對於我在做什麼它使我的編碼了不少難度

這裏是我的代碼。

stage.addEventListener(KeyboardEvent.KEY_DOWN, keydown); 

function keydown (event:KeyboardEvent):void{ 

    switch (event.keyCode){ 

    case Keyboard.LEFT : 
    ball.x -= 10; 
    break ; 

    case Keyboard.RIGHT : 
    ball.x += 10; 
    break; 

    case Keyboard.UP : 
    ball.y -= 10; 
    break; 

    case Keyboard.DOWN : 
    ball.y += 10; 
    break; 

    default : 
    break; 

    } 
} 

回答

1

,你可以有世界和字符中的保持精靈/動畫片段

然後當您移動字符,可以設置保持器在相反方向上的位置。

您可以使用全球到地方拿到球的位置,然後甚至可以塗抹一些運動平滑


這裏的一些代碼,應該工作很容易,

你需要一個叫做影片剪輯holder裏面是ball,持有者也將擁有你的世界和世界資產。只要沒有縮放,你不需要使用globalToLocal

var middlePt:Point = new Point(stage.stageWidth/2, stage.stageHeight/2); 
var pt:Point = new Point(holder.ball.x, holder.ball.y); 
var destPoint:Point = new Point(-pt.x + middlePt.x, -pt.y + middlePt.y); 

addEventListener(Event.ENTER_FRAME,enterFrame); 
function enterFrame(e:Event):void{ 
    holder.x = holder.x*0.5 + destPoint.x*0.5; 
    holder.y = holder.y*0.5 + destPoint.y*0.5; 
} 


stage.addEventListener(KeyboardEvent.KEY_DOWN, keydown); 

function keydown (event:KeyboardEvent):void{ 
    switch (event.keyCode){ 

    case Keyboard.LEFT : 
    holder.ball.x -= 10; 
    break ; 

    case Keyboard.RIGHT : 
    holder.ball.x += 10; 
    break; 

    case Keyboard.UP : 
    holder.ball.y -= 10; 
    break; 

    case Keyboard.DOWN : 
    holder.ball.y += 10; 
    break; 

    default : 
    break; 

    } 
    middlePt = new Point(stage.stageWidth/2, stage.stageHeight/2); 
    pt = new Point(holder.ball.x, holder.ball.y); 
    destPoint = new Point(-pt.x + middlePt.x, -pt.y + middlePt.y); 
} 
+0

謝謝,是他們的反正你可以告訴我一個例子嗎? 我對此很新。 – LochyMacleod 2012-04-19 18:18:49

+0

添加了一些代碼 – Daniel 2012-04-19 23:08:55