切换武器的方法?

时间:2017-02-22 11:07:05

标签: c# networking unity3d multiplayer photon

我正在使用PhotonNetworking在Unity3D中开发我的第一个多人游戏。您可以将其视为2D竞技场游戏,基本上是" 2D中的守望者"。

我已经达到了玩家可以通过英雄菜单(可在产卵点访问)在不同英雄之间切换的程度。

这是通过以下方式实现的:

游戏开始:

  • 加载表&#34; hero_data&#34;从我的SQL数据库中存储值<int, data>Dictionary,其中&#34;数据&#34;是struct{int ID, healthpoints, weaponType...}
  • 装载表&#34; weapon_data&#34;从SQL db,将其存储在Dict .....(相同的过程)

英雄转换:

通过调用RPC 来切换英雄,让每个人都知道英雄已被切换,并且获取值 hero_data-dictionary的特定索引处 这似乎完美无瑕。

然而,每个英雄都有自己的武器(应该是英雄的儿童对象),我不知道切换武器应采取哪种方法。

事实:

  • weapons_data(字典)由int 'damage', 'range', 'magazine', 'shooting_frequency', 'splash_damage' ...
  • 组成
  • 我认为至少3种武器类型 raycast (激光),射弹实例化(火箭),近战(碰撞检查)
  • 武器类型共享公共字段,如'damage', 'range', 'magazine' ...
  • 游戏包含 10位英雄

开发不同的射击类型不是问题! 什么是切换武器的高效方法?

我已经想到了什么:

  • 继承Weapon : Monobehaviour{}
  • 的基类virtual Shoot(){raycast-firing?}

继承类,例如:ProjectileShooting : Weapons{}override Shoot(){projectile instantiation?}

  • 上述RPC&#34; SwitchHero&#34;可以包括有点像if(hero.weaponType = 1){ weaponObject.AddComponent<ProjectileShooting>(); }

  • 的行
  • 或者Weapon.cs是否有实例化ProjectileShooting类的方法?

  • 或者为每个英雄创建一个包含武器的数组? (我个人不喜欢这种方法,因为大约有10个英雄,但其中一些具有相同的武器类型,只有不同的伤害和杂志值)

您如何看待这些方法?你会如何设计一个多人(英雄+)武器开关?

0 个答案:

没有答案