AS3中的相机移动

时间:2012-03-09 02:11:58

标签: actionscript-3 flash flash-cs4

好的,所以我有一个随鼠标移动的角色。我需要它留在屏幕的中心(有点像平台游戏)。我无法弄清楚如何访问相机并移动它。 (注意:我已经尝试过Vcam并移动所有其他物体,但Vcam使文件变慢或某些东西[或者我已经听过]和移动其他物体有点像作弊[并且我的需求不足])我不喜欢没有任何代码,因为我不知道从哪里开始。也许有人可以指出我正确的方向。

谢谢, 托尔

3 个答案:

答案 0 :(得分:1)

一种方法是将每个人存储在一个DisplayObject中,然后根据相机移动移动该单个对象。不要移动相机,而是将主容器移向相机的相反方向。我不确定为什么你似乎建议这样的策略是“作弊”,因为它是一种非常适合的方式。

答案 1 :(得分:1)

  

这是我之前对here发现的类似问题的回答。

我在这里做的是:

使用属性Map创建一个camera类,这是另一个自定义类MapCamera

MapCamera有五个属性:

  1. _x
  2. _y
  3. map - 对Map拥有此MapCamera
  4. offsetX实例的引用
  5. offsetY
  6. _x

    • 偏移值表示屏幕左边和上边缘的x和y间距,应设置为舞台宽度和高度的一半,以便摄像机正确居中于舞台上。
    • _yprivate属性为public function get x():Number{ return _x; } public function get y():Number{ return _y; } ,并且有getter和setter。
  7. 吸气剂非常基本:

    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);
    }
    

    setter是改变视口的地方,如下所示:

    Map

    从这里开始,您将孩子添加到map.camera.x = player.x; map.camera.y = player.y; 容器中,然后只需:

    {{1}}

    这将导致玩家始终位于屏幕的中心。

答案 2 :(得分:0)

您的相机只是一个修改所有可渲染对象位置的矢量。

myMovieClip.x = movingClipPosition.x + camera.x

因此,如果camera.x向右移动,这将使对象向左移动,给人一种“相机”的印象。