- ♂️iecne个人主页:点赞关注收藏评论支持哦~
- 每天关注iecne的作品,一起进步
- 本文收录专栏:【C++游戏引擎】
- 希望大家多多支持一起进步呀!
哈喽大家好,我是iecne,本期为大家带来的是CPP/C++【游戏引擎Easy2D】一篇打通引擎进阶类型,Keycode+MouseCode+Image。包教包会,快来看看吧!
引擎支持 Visual Studio 2013 及以上版本,如果你使用的是较低版本的 VS,那么你需要考虑一下更新你的编译器了
如何根据据Easy2D引擎中Keycode+MouseCode+Image四个类型来展开讲解
本实践旨在通过多个代码的案列,让大家理解和掌握如何使用Easy2D引擎来将这四个基础类型详细的解释并且会运用
目录
【游戏引擎Easy2D】一篇打通引擎进阶类型,Keycode+MouseCode+Image
往后看免费提供安装包
✨前言
任务描述
Easy2D导读
安装 Easy2D
一.KeyCode 键值
1)基础知识
2)实际应用
二.MouseCode 鼠标键值
三.Image 图片类和图片预加载
四.Font 字体类
五.关于命名
总结
对于编程而言,初学者最需要的不是技能,而是成就感。
如果你喜欢用 C/C++ 编写自己的小游戏,那么 Easy2D 将是个不错的选择,它大大简化了游戏制作过程,可以帮助你快速开发 Windows 上的 2D 小游戏。
它的特点和它的名字一样,Everything is Easy!
使用简易安装器
运行里面的 install.bat 文件进行安装。
点击此链接进行下载(纯免费)
下载点击这里,记得四连哦
安装程序会检测您已经安装的 Visual Studio
版本,并根据您的选择将对应库文件解压至 VS 库目录下。
Easy2D 不支持 VS2012 及以下的版本(包括 VC6.0),如果你使用的是低版本的 VS,那你需要尝试一下新版的 Visual Studio 了。
安装环境:
操作系统:Windows 7 及以上操作系统。
编译环境:Visual Studio 2013 (x86 & x64) 及以上版本。
关注点赞收藏评论支持,现在开始我们的旅途
KeyCode 枚举了键盘上几乎所有按键的键值。
对于按键类型的知识,我们可以完完全全的用本文的知识
字母键:
// 字母 A 键
KeyCode::A
// 字母 Z 键
KeyCode::Z
格式是
KeyCode::那个字母
数字键:
// 数字 0 键
KeyCode::Num0
// 数字 9 键
KeyCode::Num9
Num各位都知道吧?Number
数字小键盘键:
// 数字小键盘 0 键
KeyCode::Numpad0
// 数字小键盘 9 键
KeyCode::Numpad9
注意在写的时候,一定要加上小键盘,否则擅长小键盘的朋友会吐槽你的游戏按键坏了的
其他常用键:
// 回车
KeyCode::Enter
// 退出键
KeyCode::Esc
// 上下左右键
KeyCode::Up
KeyCode::Down
KeyCode::Left
KeyCode::Right
// 空格
KeyCode::Space
这里引用官网上的例子了,基本就是用英文构造
使用 KeyCode 配合 Input 类可以获取用户按键输入,例如:
// 获取字母 A 键是否正被按下
bool isDown = Input::isDown(KeyCode::A);
而Input类我们以后再说
用bool类型创造isDown 然后加上Input::isDown(再加上第一部分)
如何根据据Easy2D引擎中的提取键盘信息来控制精灵,也是图像移动,来传给 Sprite
#include
using namespace easy2d;
class Man : public Sprite
{
public:
Man()
{
// 加载图片
this->open(L"man.png");
// 居中显示在屏幕上
this->setAnchor(0.5f, 0.5f);
this->setPos(Window::getWidth() / 2, Window::getHeight() / 2);
}
void onUpdate()
{
if (Input::isDown(KeyCode::Up))
{
// Man 的 Y 坐标减少 2
this->movePosY(-2);
}
if (Input::isDown(KeyCode::Down))
{
// Man 的 Y 坐标增加 2
this->movePosY(2);
}
if (Input::isDown(KeyCode::Left))
{
// Man 的 X 坐标减少 2
this->movePosX(-2);
}
if (Input::isDown(KeyCode::Right))
{
// Man 的 X 坐标增加 2
this->movePosX(2);
}
}
};
int main()
{
if (Game::init())
{
// 设置窗口标题和窗口大小
Window::setTitle(L"Moving Man");
Window::setSize(640, 480);
// 创建场景
auto scene = gcnew Scene;
// 进入该场景
SceneManager::enter(scene);
// 创建一个 Man 对象
auto hero = gcnew Man;
// 将 Man 添加到场景中
scene->addChild(hero);
Game::start();
}
Game::destroy();
return 0;
}
如上,精灵图片不提供,各位自己找找哈
点赞关注评论支持,下次找到不迷路
MouseCode 枚举了鼠标的三个按键,分别是:
// 鼠标左键
MouseCode::Left
// 鼠标右键
MouseCode::Right
// 鼠标中键
MouseCode::Middle
使用 MouseCode 配合 Input 类可以获取用户按键输入,例如:
// 获取鼠标左键是否正被按下
bool isDown = Input::isDown(MouseCode::Left);
这个和2)差不多,大家自己领悟
点赞关注评论支持,下次找到不迷路
Image
表示图片,程序中使用的每一张图片都对应一个 Image 对象。
每个 Sprite 都包含一个 Image 对象,例如当你创建很多个像下图一样的 Sprite 时,它们包含的 Image 对象其实是同一个。这样做的好处就是节省内存。
Image 的另一个作用就是创建Animation(帧动画)
,这个部分在动画教程中讲解。
将图片资源复制到内存中需要耗费一定的时间,为了避免在游戏过程中因为加载图片产生卡顿,你可以在游戏开始前调用 Image::preload
函数来提前将游戏中用到的图片加载到内存中。
Image::preload(L"图片1.png");
Image::preload(L"图片2.png");
Image::preload(L"图片3.png");
这个不重要,大家了解一下
这两部分真的和键盘的那一篇十分相关,各位去看看
点赞关注评论支持,下次找到不迷路
如果你想设置 Text 的字体、粗细、字号等等属性,就需要为它创建一个 Font 。
Tips
Font 不是节点,因为它仅仅描述了文本的样式。Font 不能显示在屏幕上,也不能进行旋转之类的操作。
auto text = gcnew Text(L"Hello Easy2D!");
// 创建一个字体,宋体、字号40、粗体、斜体
Font font = Font();
font.family = L"宋体";
font.size = 40;
font.weight = Font::Weight::Bold;
font.italic = true;
// 也可以用下面的代码创建字体,效果和上面一样
Font font = Font(L"宋体", 40, Font::Weight::Bold, true);
// 设置字体
text->setFont(font);
分步骤进行上面的操作虽然简洁明了,但是熟悉了相关操作后,上面的代码难免显得有些啰嗦。你可以直接在 Text 的构造函数中传入更多的参数来指定它的字体样式:
// 在创建文本的同时指定它的字体样式
auto text = gcnew Text(L"Hello Easy2D!", Font(L"宋体", 40, Font::Weight::Bold));
Tips
没有设置 Text 的字体时,它会自动创建一个默认字体并使用。
多个 Text 可以使用一个 Font,例如下面的代码中 text1 和 text2 使用了同一个 Font 对象。
text1 和 text2 在内部会各自拷贝一份 Font,所以创建文字后再修改 font 不会影响 text1 和 text2。
Font font = Font(L"", 40); // 系统默认字体、字号40
auto text1 = gcnew Text(L"Hello", font); // text1 使用 font
auto text2 = gcnew Text(L"Easy2D", font); // text2 也使用 font
字体这部分实际上可以用图片省略,但是大可不必
记得字体不能乱弄,参考word吧~
Easy2D 按照以下规律命名函数:
- 小驼峰式命名法则,第一个单词小写,后面的单词首字母大写,如
Window::setTitle
- 所有函数均按照
动词
+名语
形式命名,如Logger::showConsole
- 获取对象的属性值:
get
+属性名
,如Node::getWidth
- 修改对象的属性值:
set
+属性名
,如Node::setPos
- 获取对象的状态(bool值):
is
+状态名
,如Node::isVisiable
本节课主要是讲解了Easy2D引擎实现的教程,至此该课示例的思想博主已经真真切切彻彻底底分享完了,相信大家对这个逻辑有了一定的理解,大家可以自己动手敲敲代码,感受一下,包教包会。若有任何侵权和不妥之处,请私信于我,定积极配合处理,看到必回!!!
帅的人已然点赞收藏关注,而丑的人还在犹豫,被犹豫了,快三连吧!
原创不易,还希望各位大佬支持一下
点赞,你的认可是我创作的动力!
收藏,你的青睐是我努力的方向!
评论,你的意见是我进步的财富!
感谢每一个观看本篇文章的朋友,更多精彩敬请期待:iecne的博客_CSDN博客-C++保姆级入门教程领域博主
文章存在借鉴,如有侵权请联系修改删除!