【cn-stem】用upbge做一个迷宫游戏。

in STEEM CN/中文5 years ago

刚刚看到帖子steemstem不陪steem玩了,要迁到Hive链上了,暂时改名hivestem,不过点赞会两边同时进行一段时间。那么我就继续在这边先发再说。
今天介绍一下如何用upbge做一个迷宫游戏。

一、游戏角色

由于小家伙对《超级飞侠》一直很喜欢,所以我决定用乐迪做为游戏角色,建模很简单,就是两个球取并集,在加上翅膀,眼睛用单独的面片,完成后的模型如下:
Image 2.jpg
图一:游戏角色模型 来源:本人制作并截图 版权:CC0

二、迷宫制作

迷宫的制作参考了网上的教程,首先网上有程序化生产迷宫的网站,我使用的是这个:
生成迷宫
设置好长、宽之后,选择类型,我选的默认模式,正方形迷宫。将生成的迷宫图下载下来,格式选SVG格式。
进入upbge(其实就是blender),选择导入svg,不过导入的svg图像非常小,一开始看不到,位置就在网格正中间,不停的滚动鼠标滑轮放大,就可以看到了。
按ctrl+J把所有图案合并成一个物体,导入的图案是以曲线的形式存在的,我们可以在曲线设置栏里设置倒角(bevel)把平面图成为有高度,但宽度唯一的“墙”。Alt+C转化为网格,加一个固体化修改器(soldify)。这样墙就有厚度了。应用修改器。迷宫就做好了,如图:
Image 3.jpg
图二、完成迷宫模型 来源:本人制作并截图,版权CC0

三、逻辑块连接与代码

这部分主要是设置游戏操作——其实游戏操作很简单,使用方向键,左右调整方向,上箭头前进。没有设置后退键。这个用逻辑块连接也可以做,不过我觉得用代码是更简洁的方式,可以用一个逻辑块连接解决问题,不使用代码的话要为每个按键都设置逻辑块连接。代码如下:

def turn(cont):
    if cont.sensors['no_key'].positive:
        cont.deactivate('Motion.001') 
        cont.deactivate('Motion') 
        cont.deactivate('move_forward') 
        
    if cont.sensors['rot_R'].positive:               
        cont.activate('Motion')
        
    if cont.sensors['rot_L'].positive:             
        cont.activate('Motion.001')
        
    if cont.sensors['forward'].positive:
        cont.activate('move_forward')  

Image 4.jpg
图三、逻辑块连接方式 来源:本人电脑截图
需要注意的是,加入一个“nokey”感应器,在没有键按下时,发出正电平,触发上面脚本的定制驱动器的命令。不然,按下方向键后,即便松开角色也会不停的运动。


参考资料

Sort:  

JCAR 3월 구독보팅입니다.
날마다 좋은 날 되세요.



This post has been voted on by the SteemSTEM curation team and voting trail. It is elligible for support from @curie and @minnowbooster.

If you appreciate the work we are doing, then consider supporting our witness @stem.witness. Additional witness support to the curie witness would be appreciated as well.

For additional information please join us on the SteemSTEM discord and to get to know the rest of the community!

Please consider using the steemstem.io app and/or including @steemstem in the list of beneficiaries of this post. This could yield a stronger support from SteemSTEM.

你那里天气如何?还在发愁自己的好文没人发现,收益惨淡吗?记得加上cn-curation标签,让飞鸽传书 帮你走出困境吧!倘若你想让我隐形,请回复“取消”。

Coin Marketplace

STEEM 0.21
TRX 0.25
JST 0.038
BTC 95337.35
ETH 3371.14
USDT 1.00
SBD 3.08