用Unreal开发一个简单的MC Demo (1)

来源:互联网 发布:java implements 用法 编辑:程序博客网 时间:2024/06/09 23:37

用Unreal开发一个简单的MC Demo 第一节

1.使用一个模版

Unreal提供了一系列的基础模版供大家使用,因为我们要做一个MC Demo,最适合的Demo即是First Person Example。
该模板提供了第一人称射击的基础,可以控制角色上下左右蹦跳,还能瞄准发射子弹,十分像MC的操作。

创建项目

2.制作一个MC风格的方块

首先将这上中下三个面的图片导入到Unity

然后右键–创建材质,只有这样才能给Unity使用

创建一个BSP方块

选择方块,将他的画刷大小改成100/100/100

将模式改为选择并旋转对象,然后将刚创建的材质拖到方块的6个面上,如果看不到记得旋转一下
于是我们得到了一个6面涂色的方块。

在世界大纲里面找到刚才创建的方块,点击他,然后创建静态网格物体

双击进入刚才的静态网格物体,设置他的碰撞,否则方块不能堆叠或者站在上面

于是,一个MC风格的静态网格物体创建完成~

在最后,我们选择该物体,然后蓝图->转换为蓝图类,将物品转化为蓝图物品。方便以后增加新功能

3.蓝图编辑

First Person Example的主要功能存放在FirstPersonCharacter蓝图里面,有移动,开火等功能。

首先我们当然要增加放置方块功能了。

首先增加Place事件,用鼠标左键触发,原来的开火放到鼠标右键
去编辑-项目设置里面修改一下~

好,开始进入正式的蓝图编辑。

首先创建一个事件监听,监听输入的Place事件
收到Place事件后,发出一条射线,通过Break Hit Result判断命中的单位

然后将命中的点XYZ除以100再乘以100(对齐方格),然后创建一个方块,然后就Bingo!

可以运行一下程序看看结果

果然可以放方块了!但是有个问题,为什么方块都在底下,堆不上去呢?

其实很简单,我们碰撞的点在地底,Z通过int(Z/100)*100运算的结果的也一直在地底下,所以我们永远堆不上去。而且在MC里,我们在方块的左右点击放置,理应也出现在目标箱子的左右。
所以我们还要获取碰撞的方块,判断命中点在目标方块的上下左右,然后放置箱子。

首先获得碰撞的Actor,尝试将他转换成方块,取得他的XYZ,用来跟之前的XYZ对比

判断Y轴,放置在箱子的上或者下,将结果保存到Cube Place Vector(需要创建一个Vector变量)里

X轴和Z轴同理。。。

最后在目的地创建方块

运行一下

非常好!BTW,我们的测试小人还能蹦到方块上。完美!

好了,第一节就这样完工。下一节我们尝试移除方块~

0 0
原创粉丝点击