Unity游戏开发完整项目,全套代码+资源

您所在的位置:网站首页 核爆rpg物品代码 Unity游戏开发完整项目,全套代码+资源

Unity游戏开发完整项目,全套代码+资源

2023-06-08 23:26| 来源: 网络整理| 查看: 265

项目简介

一个Unity3D开发的角色扮演游戏,适合初学者参考学习,也可以用来做毕业设计,解压即可使用。

 

资源链接

RPG游戏《狩魔猎人》全套代码+资源

演示视频: https://b23.tv/oqvhQGZ

资源介绍

游戏场景 2种

人物模型 6种

怪物模型 4种

武器模型 20种

粒子特效 50+

装备、道具图标 56+

UI素材若干

攻击、走路、死亡等动画若干

 

游戏大小

1.23g(压缩包628m)

 

游戏功能设计

游戏分为10部分,分别是游戏界面设计、游戏地图设计、角色设计、怪物系统、游戏道具设计、背包系统、商店系统、战斗系统、任务系统、存储系统。

e50022be88cc4f069f131000131a9f29.png

  游戏界面设计

ee352fa4d9ef4e3fbd8b7eb975084152.png

 

 游戏界面 c1df3c353a59415eae4f68b66725472c.png

主菜单

 

4d44c63f625f4e8ca1442fbf02bd5c17.png

角色创建界面

 

4d808c5909c940378e4da43b88391ee0.png

游戏界面

 

79d37b3a8afa414f89cfd511b13574e8.png

商店界面

 

37d68f56f4f446a78f5bf394b152d3e3.png

任务界面

 

b6b1efb08be6442ebb3556c985cb45a2.png

角色属性界面

 

8c1158b2f367472da2b3553d93d3d7d4.png

背包界面

 

部分代码展示

怪物有限状态机实现

void StateUpdate() { //如果目标存在且非死亡状态,切换攻击状态 if (target && state != MonsterState.Death) { state = MonsterState.Attack; } switch (state) { //空闲状态 case MonsterState.Idle: if (anim.isPlaying == false) { int num = Random.Range(0, 10); switch (num) { case 0: case 1: case 2: case 3: case 4: anim.CrossFade("idle"); break; case 5: case 6: anim.CrossFade("idle_lookaround"); break; case 7: case 8: anim.CrossFade("roar"); break; case 9: state = MonsterState.Walk; break; } } break; //行走状态 case MonsterState.Walk: //如果没有播放行走动画 if (anim.IsPlaying("walk") == false) { int i = Random.Range(0, monsterManager.nextPos.Length); nextPos = monsterManager.nextPos[i].position; transform.LookAt(new Vector3(nextPos.x, transform.position.y, nextPos.z)); } anim.CrossFade("walk"); //如果正在播放行走动画 if (anim.IsPlaying("walk") == true) { controller.SimpleMove(transform.forward * walkSpeed); DistanceUpdate(nextPos); if (distance < 0.5f) { anim.Stop(); state = MonsterState.Idle; } } break; //追逐状态 case MonsterState.Run: break; //攻击状态 case MonsterState.Attack: if (target) { Attack(); } else { state = MonsterState.Idle; } break; //死亡状态 case MonsterState.Death: break; } }

物品逻辑

public virtual void OnEndDrag(PointerEventData eventData) { if (currentGrid.name == "Destroy") { Destroy(gameObject); } //如果格子有2个以上物品 if (transform.parent.transform.childCount > 1) { GameObject itemEx = transform.parent.transform.GetChild(0).gameObject; //如果是装备 if (itemEx.tag == Tags.Equipment) { itemEx.GetComponent().transform.SetParent(itemEx.GetComponent().currentGrid); } //如果是药水 else if (itemEx.tag == Tags.Potion) { itemEx.GetComponent().transform.SetParent(itemEx.GetComponent().currentGrid); } //如果是材料 else if (itemEx.tag == Tags.Material) { itemEx.GetComponent().transform.SetParent(itemEx.GetComponent().currentGrid); } itemEx.transform.localPosition = Vector3.zero; } ObjectsDialog.instance.ShowDlg(transform.position); }

 

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3