好的,所以我有一个随鼠标移动的角色。我需要它留在屏幕的中心(有点像平台游戏)。我无法弄清楚如何访问相机并移动它。 (注意:我已经尝试过Vcam并移动所有其他物体,但Vcam使文件变慢或某些东西[或者我已经听过]和移动其他物体有点像作弊[并且我的需求不足])我不喜欢没有任何代码,因为我不知道从哪里开始。也许有人可以指出我正确的方向。
谢谢, 托尔
答案 0 :(得分:1)
一种方法是将每个人存储在一个DisplayObject
中,然后根据相机移动移动该单个对象。不要移动相机,而是将主容器移向相机的相反方向。我不确定为什么你似乎建议这样的策略是“作弊”,因为它是一种非常适合的方式。
答案 1 :(得分:1)
这是我之前对here发现的类似问题的回答。
我在这里做的是:
使用属性Map
创建一个camera
类,这是另一个自定义类MapCamera
。
MapCamera
有五个属性:
_x
_y
map
- 对Map
拥有此MapCamera
offsetX
实例的引用
offsetY
_x
_y
和private
属性为public function get x():Number{ return _x; }
public function get y():Number{ return _y; }
,并且有getter和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);
}
setter是改变视口的地方,如下所示:
Map
从这里开始,您将孩子添加到map.camera.x = player.x;
map.camera.y = player.y;
容器中,然后只需:
{{1}}
这将导致玩家始终位于屏幕的中心。
答案 2 :(得分:0)
您的相机只是一个修改所有可渲染对象位置的矢量。
myMovieClip.x = movingClipPosition.x + camera.x
因此,如果camera.x向右移动,这将使对象向左移动,给人一种“相机”的印象。