简单版牧师与魔鬼(Unity3D编程)
学习资料参考:
gameObject移动函数学习
https://www.cnblogs.com/sanyejun/p/7683641.html
unity点击事件学习
参考网站:http://blog.sina.com.cn/s/blog_c3e21e750102yfnm.html
c#中的引用,使用ref 变量。
用代码的方式加载预设prefabs
river = (GameObject)Resources.Load("Prefabs/River");
river = Instantiate(river); //在这里我犯了个坑。开始的时候写了Instantiate(river);。并没有将真正生成的实例赋给river。导致脚本没有生效。
// 搞了好久还是不会,最后求助了TA师兄。很快就把问题定位了。感谢TA师兄
作业要求:https://pmlpml.gitee.io/game-unity/post/03-space-and-motion/
1. 列出游戏中提及的事物(Objects)
牧师、魔鬼、船、河、河岸
2. 用表格列出玩家动作表(规则表),注意,动作越少越好
1)点击牧师或者魔鬼,如果船与点击牧师或者魔鬼在同一侧,且船上数量少于2。则点击牧师与魔鬼移动到船上。
2)点击船,如果船上有牧师与魔鬼,则船与它载的人物移动到另一侧河岸。
3)点击RESTART按钮,重新开始游戏。
3. 请将游戏中对象做成预制
代码部分介绍:

Control:ControlGameObjects.cs :用来控制Model中船和人物的运动,检测玩家是否通关或者通关失败,然后控制View显示。
Model:EventClick.cs: 用来控制船的行为,同时有一系列关于船的状态参数。 EventClickPeoPle.cs: 用来控制人物的行为,同时又一系列关于人物的状态参数。
View:View.cs:用来控制界面的通知信息,如时间,RESTART按钮,以及标题。是否通关成功等信息。
代码细节:
ControlGameObjects.cs:
总框架:当游戏结束后,不再处理点击事件和检查。当点击按钮后,gameEndOrNot为Ture。重置所有状态信息,重开游戏。
重置ControlGameObjects的所有状态信息
重置所有预设(prefab)的状态信息
点击事件的处理:
当预设(prefab)被点击后,预设的脚本先通知Control,Control处理信息(移动是否符合条件),再告诉预设能不能进行移动。
Control通过检测预设的变量click来检测用户是否产生了点击行为。
BoatClick() 船移动点击响应函数
PeoPleClick():人物点击响应函数,分为移动到船或者移动到岸上
控制人物移动的部件(component)EventClickPeoPle
船岸移动函数
控制人物移动从岸上到船上,或者到从岸上到船上
参数代表的是人物在船上的位置,或者人物将要到船上的位置(左边还是右边)
人物随船移动函数
移动思路简析
去船上分为四部分。返回也是分为四部。返回是去船上的逆过程。
具体以从右岸去船上为例子
每次刷新都会只执行一个移动函数,直到去到目标位置,才开始执行下一个MoveBoat。
运行完后,更新所有状态。
如果step为True,说明人物已经经过了目标位置。就不用执行了。如果到了指定位置,就将Step改为True。指示目标已经到了,要执行下一个移动函数。
控制船移动的部件(component)
船的移动比较简单,与人物的移动基本类似。
这就是魔鬼与牧师游戏设计的基本思路
具体代码细节请参考我gitee。
https://gitee.com/woodx9/unity-3D-homework/tree/master/PriestsAndDemons
独立完成本项目大概需要三天时间。
谢谢观看。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」