简单版牧师与魔鬼(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

独立完成本项目大概需要三天时间。

谢谢观看。

 

posted @   woodx  阅读(396)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
点击右上角即可分享
微信分享提示