Unity游戏开发完整项目,全套代码+资源 |
您所在的位置:网站首页 › 核爆rpg物品代码 › Unity游戏开发完整项目,全套代码+资源 |
项目简介
一个Unity3D开发的角色扮演游戏,适合初学者参考学习,也可以用来做毕业设计,解压即可使用。 资源链接 RPG游戏《狩魔猎人》全套代码+资源 演示视频: https://b23.tv/oqvhQGZ 资源介绍游戏场景 2种 人物模型 6种 怪物模型 4种 武器模型 20种 粒子特效 50+ 装备、道具图标 56+ UI素材若干 攻击、走路、死亡等动画若干 游戏大小 1.23g(压缩包628m) 游戏功能设计 游戏分为10部分,分别是游戏界面设计、游戏地图设计、角色设计、怪物系统、游戏道具设计、背包系统、商店系统、战斗系统、任务系统、存储系统。 游戏界面 ![]() 主菜单
![]() 角色创建界面
![]() 游戏界面
![]() 商店界面
![]() 任务界面
![]() 角色属性界面
![]() 背包界面 部分代码展示 怪物有限状态机实现 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 |