簡體   English   中英

AS3中的相機移動

[英]Camera movement in AS3

好的,所以我有一個隨鼠標移動的角色。 我需要它留在屏幕的中心(有點像平台游戲)。 我無法弄清楚如何訪問相機並移動它。 (注意:我已經嘗試過Vcam並移動所有其他物體,但Vcam使文件變慢或某些東西[或者我已經聽過]和移動其他物體有點像作弊[並且我的需求不足])我不喜歡沒有任何代碼,因為我不知道從哪里開始。 也許有人可以指出我正確的方向。

謝謝,托爾

一種方法是將Everyhting存儲在一個DisplayObject ,然后根據攝像機移動移動該單個對象。 不要移動相機,而是將主容器移向相機的相反方向。 我不確定為什么你似乎建議像這樣的策略是“作弊”,因為它是一個非常合適的方式來做到這一點。

這是我之前在這里找到的類似問題的答案。

我在這里做的是:

使用屬性camera創建一個Map類,這是另一個自定義類MapCamera

MapCamera有五個屬性:

  1. _x
  2. _y
  3. map - 對擁有此MapCameraMap實例的MapCamera
  4. offsetX
  5. offsetY

    • 偏移值表示屏幕左邊緣和上邊緣的x和y間距,應設置為舞台寬度和高度的一半,以便攝像機正確地居中在舞台上。
    • _x_y屬性是private ,並且具有getter和setter。

吸氣劑非常基本:

public function get x():Number{ return _x; }
public function get y():Number{ return _y; }

setter是視口將被改變的地方,如下所示:

public function set x(n:Number):void
{
    _x = n;
    map.x = -(_x + offsetX);
}

public function set y(n:Number):void
{
    _y = n;
    map.y = -(_y + offsetY);
}

從這里,您將您的孩子添加到Map容器中,然后可以簡單地去:

map.camera.x = player.x;
map.camera.y = player.y;

這將導致玩家始終位於屏幕的中心。

您的相機只是一個修改所有可渲染對象位置的矢量。

myMovieClip.x = movingClipPosition.x + camera.x

因此,如果camera.x向右移動,這將使對象向左移動,給人一種“相機”的印象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM