Silverlight游戏设计(Game Design):(六)场景编辑器之开源畅想

    所有的游戏设计辅助工具都是为了提高游戏开发效率而出现的,Silverlight-2D游戏场景编辑器(QXSceneEditor)同样也不例外,虽然它不比《魔兽》、《星际》、《帝国》等大作的地图编辑器拥有强大到甚至可以通过“换肤”直接创造出一款新游戏;但是大家可以通过它,配合上前几节讲述的游戏架设方式几乎能搭建任意一款2D游戏图形框架。无论是RPG(角色扮演)SLG(策略)RTS(即时战略)还是ACT(动作)STG(射击)CAG(卡片游戏)等游戏类型,不论精灵是2方向(如:《地下城与勇士》、《三国群英传》) 4方向(如:《漂流幻境》)还是8方向(如:《破天一剑》)甚至16方向(如:《剑侠世界》中的魔法),不论场景是横向、纵向、主视角、牵引模式,倾斜的还是垂直的,不论游戏空间是2层的(如:《梦幻诸仙》)3层的(如:《奇迹》)还是N层的(如:《英雄无敌》、《铁血联盟》)等等,只要是2D的均可用作场景的布局或架设。

场景编辑器是如何做到如此的高度通用而神乎其神的?在第二节中,我已较详细的讲解了它的核心功能:动态坐标系系统。通过动态修改场景以及它内部的地图、坐标系等对象的某些参数即可实现场景的任意倾斜度、单元格尺寸、参照系、2D位置,3D旋转以及主角在位置显示及移动方面的多模式。至于其中的核心代码我一再强调其实不过就两个,是否与第一部第十节的公式吻合大家可自行比对,事实证明它们是正确的,因此也请特别关注它的朋友们放一万个心:

        /// <summary>

        /// 将窗口坐标系中的坐标换算成游戏坐标系中的坐标

        /// </summary>

        public Point GetGameCoordinate(double angle, Point p, uint gridSize) {

            if (angle == 0) {

                return new Point((int)(p.X / gridSize), (int)(p.Y / gridSize));

            } else {

                double radian = GetRadian(angle);

                return new Point(

                    (int)((p.Y / (2 * Math.Cos(radian)) + p.X / (2 * Math.Sin(radian))) / gridSize),

                    (int)((p.Y / (2 * Math.Cos(radian)) - p.X / (2 * Math.Sin(radian))) / gridSize)

                );

            }

        }

 

        /// <summary>

        /// 将游戏坐标系中的坐标换算成窗口坐标系中的坐标

        /// </summary>

        public Point GetWindowCoordinate(double angle, Point p, uint gridSize) {

            if (angle == 0) {

                return new Point(p.X * gridSize, p.Y * gridSize);

         

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 18
    评论
仿unity3d写的一个小的游戏引擎 1.simple文件夹为 程序文件夹,内含simple.exe可执行文件 点击即可运行。 2.project文件夹为工程文件夹,内含obj格式的模型文件。 3.程序目前只支持obj格式,obj模型文件必须放在 _object文件夹内,纹理必须放在 _Texture文件夹内,才能被正确加载。(纹理必须是.bmp或 .tga)。 4.project 文件夹下的luascript 文件夹内含 lua控制脚本。 5.程序的菜单大多功能并没实现,还没有保存场景的功能。 6.必须是在不运行脚本的情况下编辑场景,否则看不到效果(按Esc键停止运行脚本)。 7.构造地形是等高图必须为bmp,纹理图需为tga。 程序操作: 模型拾取:(1) 可在scene 窗口内用鼠标单击(Inspector 会显示选中的模型的详细信息(包括名称,Transform属性,脚本) (2) 可在sceneShower 窗口内单击相应的名称,来选择对应的模型。 模型的复制: 按住shift键 在sceneShower窗口单击相应的名称,那么相应的模型就会复制。 模型的删除: 当模型处于选择状态时,按delete键 。 模型的移动和旋转,缩放和 unity3d 的操作 类似。 脚本的应用:在Inspector 内按 Add Control Script 可谓相应的节点加lua的控制脚本。 单击运行按钮,程序会运行脚本,错误信息会在Console窗口显示(严重错误会导致程序崩溃) (注意:要想结束脚本的运行,需按 Esc键 ) 对scene场景的常用操作和unity3d 类似。
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值