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;

  }
}
4

1 に答える 1

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);
}
于 2012-04-19T15:01:47.173 に答える