Actionscript 3 AS3中的摄像机运动

Actionscript 3 AS3中的摄像机运动,actionscript-3,flash,flash-cs4,Actionscript 3,Flash,Flash Cs4,好的,我有一个角色可以随着鼠标移动。我需要它保持在屏幕中央(有点像平板游戏)。我想不出如何接近摄像机并移动它。(注意:我已经尝试过Vcam并移动所有其他对象,但Vcam会使文件速度变慢或发生类似的事情[或者我听说是这样],并且移动其他对象有点像作弊[出于我的需要是不够的]),我没有任何代码,因为我不知道从哪里开始。也许有人能给我指出正确的方向 谢谢, Thor一种方法是将所有内容存储在一个DisplayObject中,然后根据相机的移动移动单个对象。不要移动相机,而是将主容器向相机的相反方向移动

好的,我有一个角色可以随着鼠标移动。我需要它保持在屏幕中央(有点像平板游戏)。我想不出如何接近摄像机并移动它。(注意:我已经尝试过Vcam并移动所有其他对象,但Vcam会使文件速度变慢或发生类似的事情[或者我听说是这样],并且移动其他对象有点像作弊[出于我的需要是不够的]),我没有任何代码,因为我不知道从哪里开始。也许有人能给我指出正确的方向

谢谢,
Thor

一种方法是将所有内容存储在一个
DisplayObject
中,然后根据相机的移动移动单个对象。不要移动相机,而是将主容器向相机的相反方向移动。我不知道你为什么认为这样的策略是“欺骗”,因为这是一种非常合适的方法

这是我以前对一个类似问题的回答

我在这里做的是:

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

MapCamera
有五个属性:

  • \u x
  • \u y
  • map
    -对拥有此
    MapCamera
  • offsetX
  • offsetY

    • 偏移值表示屏幕左边缘和上边缘的x和y间距,该间距应设置为舞台宽度和高度的一半,以便摄像机正确地位于舞台中心
    • \ux
      \uy
      属性是
      私有的
      ,具有getter和setter
  • getter非常基本:

    public function get x():Number{ return _x; }
    public function get y():Number{ return _y; }
    
    设置器是视口将被更改的位置,如下所示:

    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移到右侧,这将使对象向左移动,给人以“camera”的印象。

    hmm。。似乎如果我想制作一个多人游戏(人类玩家),那是不切实际的,除非我制作了一个舞台大小的屏幕……为什么这不切实际呢?我一点也不确定你是怎么说的,对于多人来说,这是不同的。如果有两个屏幕,使用两个
    DisplayObjects
    我认为制作相机会更快,这样我就不会有20个玩家每次移动屏幕20次。看起来这可能会有问题或不切实际。你不需要为每个玩家移动屏幕吗?如果您认为该方法是如何工作的,那么您必须不理解如何正确地实现该方法。这种方法非常实用,如果编程正确,可以非常有效地使用,不会出现任何故障。甚至不可能将其移动到20个不同的位置,因为地图只能在一个位置。出于同样的原因,只有一名球员可以在中心。您可以相对于中间的玩家移动它。我是否通过引用“camera”来访问相机。否,默认情况下不存在相机,您必须创建一个camera类。这可能会更有用,我不确定这里到底发生了什么。什么是n。也许你能给我一个小样品。我已经三年没编程了。