一 一座堤 2023-03-23 Unity3d UI系统 UI 效果制作(拓展篇) 在之前的这一篇博客文章中(www.yizuodi.cn/archives/129),我们进行了UI 效果制作。在另一篇文章中(www.yizuodi.cn/archives/119),我们制作了一款智能巡逻兵游戏。本篇文章,我们做了一个简单的用户登录实现,来尝试让我们的智能巡逻兵游戏变成一款网络游戏。 为什么要做“用户登录”的部分? 对于我们之前的智能巡逻兵游戏中玩家得分的设计,我个人的想法是将得分和通关用时综合考虑。 我们分析,得分为躲避得分(成功甩掉计一分)。任务点是随机刷新的,而较难完成的任务点会导致玩家“用时增加,得分增加”概率提升。所以我们可以将游戏得分和通关用时加权求和得到一个分数(类似与很多游戏的“段位分”),来作为玩家游戏成果的评估。 “巡逻兵游戏”是一个单机游戏,那么我们怎么通过所谓“段位分”给予玩家满足感呢?我个人的想法是提供一个全球游戏榜单(我制作了一个示例game.233521.xyz)。 为此,我们需要一个为玩家提供一个账号系统,需要一个服务端来让所有玩家可以提交他们的游戏结果。 我们的设计 1.在游戏中,我们有一个登录的UI,玩家点击按钮可以唤起浏 #3D游戏编程与设计
一 一座堤 2022-11-15 Unity3d游戏智能 坦克对战游戏AI设计 本文内容为坦克对战游戏AI设计。 我们构建 AI 对战坦克有几点目标: · 使用“感知-思考-行为”模型,建模 AI 坦克 · 场景中要放置一些障碍阻挡对手视线 · 坦克要放置一个矩阵包围盒触发器,保证 AI 坦克能使用射线探测对手方位 · AI 坦克必须在有目标条件下使用导航,并能绕过障碍。 · 实现人机对战 我们使用了资源Tanks! Tutorial(Unity资源商店链接)。 接下来我们构建AI对战坦克。 游戏设计 玩家操纵红色坦克,可以通过WASD按键移动坦克,按空格键发射弹药攻击。地图中有一些蓝色的AI坦克,当玩家出现在AI坦克的视野中,它们就会跟踪玩家并向玩家发射弹药。每辆坦克都有自己的血量值,受到攻击坦克血量会下降,当血量值将为0以下,则坦克被击毁。 如果玩家的坦克被击毁则游戏失败,如果玩家击毁了所有的AI坦克则游戏胜利。 对于“感知-思考-行为”模型—— AI坦克会感知周围是否有玩家存在,进行思考: 1.没有玩家,那么就进行行动巡逻。 2.有玩家,那么就进行行动追捕。 继续进行感知: 1.若玩家进入AI坦克的射击范围,则进行行动射击。 2.若玩家没有进入AI #3D游戏编程与设计
一 一座堤 2022-11-15 Unity3dUI系统 UI 效果制作 本文主要涉及UI效果制作——UGUI实现Quest Log公告牌效果。 进入 NGUI 官方网站,有以下效果 • Inventory 背包系统 • Quest Log 公告牌 • Scroll View 选择板 注:以上例子需要使用 Unity web player, 仅支持以下操作系统与浏览器,参见官方下载 • Windows 版 IE11 • Mac OS X 10.7 Safari 注:出现界面需要等待较长时间,让它慢慢加载 NGUI提供的示例如下图: 而UGUI是由unity官方提供的UI工具套件。 参考它们的区别:https://www.jianshu.com/p/5891e28aa766 场景布置 我们可以通过创建UI-面板创建一个panel(面板),其根目录为canvas(画布)。 然后我们在panel中创建一个文本,作为公告栏的标题;在panel中添加一个ScollView(滚动视图)作为公告栏的主要内容部分;在panel中添加一个button(按钮)作为公告栏“关闭”按钮。略作调整后效果如图(这里我们使用了2D Casual UI资源包): 滚动视图的完善 #3D游戏编程与设计
一 一座堤 2022-11-15 Unity3d粒子系统 汽车尾气模拟 本文使用官方资源 Vehicle 的 car, 使用 Smoke 粒子系统模拟启动发动、运行、故障等场景效果,完善“汽车尾气”模拟 场景布置 我们需要先导入Unity3D 官方资源包Standard Assets,该资源包已经不再内置,而且资源商店也没有,我提供一份附在这里。 Standard Assets.unitypackage(68.4M) 网上找来的资源包导入后,可能会有一些问题,可参考: https://blog.csdn.net/Sakuya__/article/details/113815974 我们导入资源包后,先在场景中放置一个3D平面对象(plane),然后在资源包中找到Vehicle 的 car的预制,拖入场景中,效果如下图: 粒子效果模拟 根据要求,我们模拟启动发动、运行、故障三种场景的尾气效果。 预制的Car里面的Particles里有一个Smoke粒子系统ParticleBurnoutSmoke。我们的粒子系统叫做start、run和damage。 在检查器中,粒子系统有很多设置选项,我们可以根据自己的需要选择。由于Standard Assets资源 #3D游戏编程与设计
一 一座堤 2022-11-15 Unity3d模型与动画 智能巡逻兵游戏 游戏设计: • 创建一个地图和若干巡逻兵(使用动画); • 每个巡逻兵走一个3~5个边的凸多边型,位置数据是相对地址。即每次确定下一个目标位置,用自己当前位置为原点计算; • 巡逻兵碰撞到障碍物,则会自动选下一个点为目标; • 巡逻兵在设定范围内感知到玩家,会自动追击玩家; • 失去玩家目标后,继续巡逻; • 计分:玩家每次甩掉一个巡逻兵计一分,与巡逻兵碰撞游戏结束; 程序设计: • 使用订阅与发布模式传消息 • 工厂模式生产巡逻兵 游戏设计 基于上面的几点,我们设计这样一个游戏场景: 1.我们的地图有3×3共计9块区域,不同区域间有部分连通,每个区域有一个巡逻兵。 2.地图上会随机生成一些任务点,作为玩家需要到达的目标位置,这些任务点需要玩家全部到达且未被巡逻兵碰撞到方为获胜。 3.每到达一个任务点时为甩掉巡逻兵一次,计一分。 4.每次游戏任务点位置随机分布在地图上,但总的任务点数量一定。 5.玩家初始位置为地图区域的中心位置。 游戏展示 游戏操作演示1-游戏各项操作(11.7M) 游戏操作演示2-失败(1.17M) 游戏操作演示3-完成(0.9M) 游戏预制制作 基于上 #3D游戏编程与设计
一 一座堤 2022-10-16 基于Unity3D 编写简单的自定义组件 本文参考官方手册(https://docs.unity3d.com/ScriptReference/Editor.html),编写一个简单的自定义Component(组件),用自定义组件定义几种飞碟,编辑并赋予飞碟一些属性,做成预制 首先我们可以定义飞碟的一些共有的属性,脚本DiskData: public class DiskData : MonoBehaviour { public int score = 1; // 射击命中得分 public Color color = Color.white; // 颜色 public Vector3 direction; // 初始的位置 public Vector3 scale = new Vector3(1 ,0.25f ,1); // 大小 } 我们把它绑定到飞碟上,在检查器中可以看到几项属性: 继续参考Unity的文档:https://docs.unity3d.com/cn/current/ScriptReference/Editor.html 可知需要我们新建一个继承Editor的脚本类MyDiskEditor,让我们有一个使 #3D游戏编程与设计
一 一座堤 2022-10-09 基于Unity3D引擎构建简单的游戏场景 本文主要基于资源商店中获取到的Fantasy Skybox FREE资源包,进行游戏场景构建,并为场景设计地形(有树木和草地等元素) 首先我们从资源商店获取到Fantasy Skybox FREE资源包: https://assetstore.unity.com/packages/2d/textures-materials/sky/fantasy-skybox-free-18353 然后在我们的项目中导入资源包(在包管理器中找到它,下载并导入)。 导入完成后,我们在 窗口-渲染-光照 选项中,选择环境,选择天空盒材质以应用上述资源包中的材质。 然后,我们在组件中找到上述资源包的SampleTerrain并添加,让我们的场景中有地形的存在,添加成功后效果如下: Unity Editor包含的地形(Terrain)功能,可以让我们添加地形,并对地形进行一些操作(地形升降、添加花草等),文档内容可见: https://docs.unity3d.com/cn/current/Manual/script-Terrain.html 根据上述描述,在Fantasy Skybox FREE内置S #3D游戏编程与设计
一 一座堤 2022-10-08 使用中国银行长城跨境通国际借记卡购汇与消费 背景介绍 作为普通的穷学生,有时候我们会需要进行境外消费(海淘等),但是许多境外的平台不支持卡组织为中国银联的银行卡(有时候也不支持Paypal),需要我们使用卡组织为万事达(MasterCard)或者VISA的银行卡。 而通常我们可办理到的外币卡(或双币卡)都是信用卡,一方面学生很难办理到信用卡(允许学生办理的信用卡一般也为0额度,且为银联卡),另一方面办理信用卡会被查征信。 为了解决我们的需求,这里就要介绍本文的主角—— 长城跨境通国际借记卡是中国银行(四大国有银行之一)发行的 VISA / MasterCard 多币种外标借记卡。不设申请门槛,支持网上申请和线下申请,适合学生等不具备申请信用卡条件的人员。 温馨提示: 1.Paypal支持绑定银联卡,在银行卡开启境外消费功能的前提下可进行外币消费(例如建行,可检索关键字:建行 app 开启境外境外交易功能),消费会以汇率折算为人民币扣除银行卡余额,无需使用外币卡绑定paypal即可支付外币账单。(请注意结算时使用Paypal的汇率还是银行的汇率,二者相差较大,详情请google之) 2.办理中国银行长城跨境通国际借记卡,强烈 #网络资源
一 一座堤 2022-10-05 基于Unity3D的物体抛物线运动实现 本文主要涉及基于Unity3D的物体的抛物线运动实现。 方法 1:直接修改对象的Transform属性 using System.Collections; using System.Collections.Generic; using UnityEngine; public class Move : MonoBehaviour { void Start(){} void Update() { this.transform.position += Vector3.right * Time.deltaTime * 3; this.transform.position += Vector3.down * Time.deltaTime * 3; } } 方法 2:使用向量Vector3的方法 我们将对象的最新位置用Vector3向量来表示,然后将这个向量赋给对象。 下面我们让对象水平方向匀速,垂直方向受重力(模拟)影响下落。 using System.Collections; using System.Collections.Generic; using UnityEngine; #3D游戏编程与设计