游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1400|回复: 0

如何使用CL游戏引擎制作游戏(超详细文字教程)

[复制链接]

1

主题

2

帖子

8

积分

新手上路

Rank: 1

积分
8
发表于 2019-6-23 11:14:24 | 显示全部楼层 |阅读模式
欢迎加入QQ群:552438279  进行交流CL国产可视化多平台游戏制作引擎

游戏开始准备工作

欢迎来到第一个CL游戏引擎课程的开头,该教程教您并逐步完成使用CL游戏引擎创建2D风格RPG游戏的过程。在这之前,我已经假设您对编辑器有一个大概的了解并能理解我下面所说的一些设置所在的位置。
设置IDE
在编辑器里 编辑->设置当中我们应优先设置脚本编辑器,默认为编辑器提供的Lime编辑器,该编辑器只提供简单的文本输入,如果您有visual studio,请选择其中一个版本,如果您使用自己的vscode或者notepad++等工具,请选择None,编辑器将默认调用系统编辑器.
在此推荐,如果您使用c#语法,强烈推荐使用visual studio进行编写
如果您已经安装了visual studio,我们还推荐一个IDE插件resharper,可以免除记住大量的命名空间,及更加丰富的智能感知,您可以体验30天。
平台支持
你有权利知道CL游戏引擎目前所支持的版本,在理论上,CL游戏引擎支持IOS及Android的开发,但是目前我们只提供了Windows下的发布,并计划Windows稳定后才逐步开放其他平台。
脚本选择
如果您对游戏无任何基础,请选择Lua脚本,如果您有一定基础并且对C#有过了解请选择C#脚本。在游戏当中,您需要自我评估两种语言的优缺点
  • Lua无编译时间/C#脚本越多编译时间越长
  • Lua暴露在游戏外容易被破解/C#脚本会编译为dll但无混淆, 对稍微有一点了解破解手段的人来说一样难以阻挡破解
如果您对自我C#无法判断水平,请检查以下几点基础要求
  • 了解什么是类,方法,属性,接口,命名空间
  • 了解静态方法,泛型方法的使用
  • 了解封装,继承,多态性
  • 了解数组,数据类型,类型转换
如果您对以上某一项不了解请重新阅读C#基础知识后再使用或直接使用Lua.
资源
CL游戏引擎分为加密资源与非加密资源,大多数的资源在编辑器内使用为非加密资源,加密资源需要使用游戏工程下Content目录下的Content.mgcb工具进行素材加密,如果您第一次使用CL游戏引擎,不建议使用加密资源,所以您无需担心资源无法使用等情况。
即使后缀名不一致,资源名称也不应重复,在后期发布过程中,引擎会将所有资源进行加密发布,如果出现重复资源则会造成引擎混乱。

创建一个四处移动的玩家
我们即将开始我们的第一个玩家的绘制,并且稍后会介绍更高级的东西,就目前而言,我们将尽可能简单的介绍。我们再行走的时候会移动玩家,我们将创建一个处理我们的地图类和控制周围环境的相机类,相机将跟随我们的玩家。
首先,让我们开始为我们的第一个玩家奠定一些基础。我们暂时不会使用这个简单的教程进入多人游戏,但会包含在将来的教程中,所以我们仍然以客户端的思维模式构建。
创建一个场景,在最上面的文档中我们已经介绍过如何创建一个场景,场景完成后,我们需要双击改场景进行打开该场景。
之后我们创建一个图片对象,准备一张作为主角的图片,点击图片对象,在右边出现的属性面板当中的图片路径里选中该图片,在编辑器当中我们就能看到我们的第一个主角已经在游戏当中存在了。
运行游戏,我们现在需要通过鼠标/键盘来控制玩家,先从简单的键盘控制开始,我们在文档当中可以找到关于键盘的一些API
我们右键资源管理器中的Scripts文件夹,如果您更偏向使用Lua则创建一个Lua脚本,如果您对C#有一定研究,则创建一个c#脚本。我们命名为Player.cs / Player.lua打开我们刚创建的脚本,他是继承于ObjectComponent,这意味着我们可以使用ObjectComponent中的所有公开属性和方法
我们在脚本当中找到默认提供的Update方法,这里只进行一些游戏逻辑更新,并且每一帧都会运行到其中的方法,我们的键盘或者鼠标控制则需要在该方法中每一帧进行检测来达到连续移动。
我们先简单的使用键盘A进行让人物向左移动
  • csharp
  • public float Speed = 100;
  • public override void Update(Microsoft.Xna.Framework.GameTime gameTime)
  • {
  •     base.Update(gameTime);
  •     // TODO:更新组件逻辑
  •     if (Keyboard.GetState().IsKeyDown(Keys.A))
  •     {
  •         Transform.Position = new Vector2(Transform.Position.X - Time.deltaTime * Speed, Transform.Position.Y);
  •     }
  • }
需要引入命名空间 using Microsoft.Xna.Framework.Input;
您还可以将public float Speed = 100; 改为 public float Speed { get; set; }自动属性。则在编辑器的属性视图中可以看到改属性并动态进行修改,但是无法在脚本中进行初始值设置,只允许在编辑器内编辑初始值。(请确保该组件已添加至对象上,如果未添加请往下继续阅读如何添加)
  • lua
  • local Speed = 100
  • function Script:Update()    -- 0:gameTime
  •     local gameObject = Script.InitializeArgs[0
  •     local transform = gameObject.Transform
  •     if (Keyboard.GetState():IsKeyDown(Keys.A)) then
  •         transform.Position = Vector2(transform.Position.X - Time.deltaTime * Speed, transform.Position.Y)
  •     end
  • end
Time.deltaTime 代表每一帧所花费的时间,这个值能允许您的游戏以固定的速度进行游戏。
有关于Script.InitializeArgs见 脚本说明
有关于Time.deltaTime 见 时间类
接下来您可以自行为玩家添加其他方向的移动。请阅读下面添加组件后再运行游戏。
添加组件
如果您使用的是C#脚本,请在编辑器中点击编译按钮进行编译,然后右键图片对象添加您的脚本。如果您是Lua脚本,添加后的Lua组件需要点击一下,然后再右边的属性视图中选择脚本文件绑定您创建的Lua脚本,然后运行游戏查看效果。
注意!如果您是C#脚本,每次修改脚本后需要点击完整编译,如果是Lua脚本则只需要简单编译即可
鼠标控制
鼠标控制人物行走主要难点涉及到方向问题,CL游戏引擎中提供了Transform.LookAt方法,可以返回点与点之间的弧度。注意的一点是在LookAt第二个参数要改为false,不需要引擎自动为你进行旋转,你需要自行判断弧度来辨别,如果您对弧度并不是了解,则使用MathHelper.ToDegrees转换为角度
移动物体您可以直接通过改变transform.Position属性 或者通过 transform.Translate方法进行改变位置



您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-7-5 19:57

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表