public void SpawnMonster(Monster.Info monsterInfo, int playerID, HouseInfo houseInfo) { //var houseHeight = houseInfo.gameObject.GetComponent<> var objPrefab = GetMonsterObject(monsterInfo.IDStr); var obj = Instantiate(objPrefab, _monsterListObject.transform); var mob = obj.GetComponent <Monster.Monster>(); var offset = (playerID == Manager.DEFAULT_PLAYER_ID) ? 1 : -1; mob.SetInfo(playerID, houseInfo.RealHP, houseInfo.RealAttack, houseInfo.RealSpeed).Initialize(); var newPos = houseInfo.transform.position + offset * new Vector3(4, 0, 0); mob.transform.position = newPos; var newLocPos = mob.transform.localPosition; newLocPos.y = 0; newLocPos.z -= 5f; mob.transform.localPosition = newLocPos; // // Bind to Rival's player event mob.OnMonsterKilled += _players[1 - playerID].OnRivalMonsterKilled; if (playerID == Manager.DEFAULT_PLAYER_ID) { mob.Direction = Direction.Right; } else { mob.Direction = Direction.Left; } mob.Walk(); }
public void CreateMonster(MapInfo.Monster data) { Monster.Info info = Game.Database.GetMonsterInfo(data.id); GameObject go = Game.Database.LoadResource("Roles/" + info.model); go.name = info.name.ToString(); go.transform.SetParent(m_npcRoot); CharacterController cc = go.AddComponent <CharacterController>(); cc.center = new Vector3(0, 1, 0); float scale = info.scaling; go.transform.localScale = new Vector3(scale, scale, scale); data.pos.CopyTo(go.transform); Role role = go.AddComponent <Role>(); role.team = Role.Team.Red; role.m_MoveSpeed = 0.5f; role.hp = info.hp; role.atk = info.atk; role.def = info.def; role.exp = info.exp; go.AddComponent <ZakoAI>(); Monster monster = go.AddComponent <Monster>(); monster.m_id = data.id; m_roles.Add(role); }
private void BindButtonEvent() { var player = _scene.GetPlayerAt(Manager.DEFAULT_PLAYER_ID); System.Action noMoneyMsg = () => new DialogBuilder().SetContent("你沒錢┐( ̄ヘ ̄)┌").Show(_scene.Window); System.Action <System.Action> doActionOrShowErrMsg = (System.Action a) => { try { a(); } catch (System.Exception e) { new DialogBuilder() .SetIcon(Dialog.Icon.Error) .SetTitle("錯誤") .SetContent(e.Message) .Show(_scene.Window); } }; System.Action <HouseInfo> checkInfoAndShow = (houseInfo) => { if (houseInfo != null) { CloseAllPanel(); DisplayInfo(houseInfo); } else { noMoneyMsg.Invoke(); } }; _buyOK.onClick.AddListener(() => { var houseInfo = player.BuyHouse(_scene.MapGridGenerator.CurPoint); checkInfoAndShow.Invoke(houseInfo); }); _buyCancel.onClick.AddListener(() => Hide()); for (int i = 0; i < _selectCard.Length; i++) { int finalI = i; // Important, if use i, i always equals to _selectCard.Length _selectCard[i].Button.onClick.AddListener(() => { var houseInfo = player.SetHouseMonster(_scene.MapGridGenerator.CurPoint, finalI); checkInfoAndShow.Invoke(houseInfo); }); _selectCard[i].OnMouseOver += () => { var mobID = player.Info.GetCardIds()[finalI]; Monster.Info mobInfo = Manager.Manager.MonsterInfoCollection[mobID]; _monsterInfoText.text = $"名稱: {mobInfo.Name}, 價錢: {mobInfo.Cost}"; _monsterDescText.text = mobInfo.Description; }; _selectCard[i].OnMouseLeave += () => { _monsterInfoText.text = ""; _monsterDescText.text = ""; }; } _upgAtt.onClick.AddListener(() => { checkInfoAndShow.Invoke( player.UpgradeHouse(_scene.MapGridGenerator.CurPoint, HouseInfo.UpgradeType.Attack) ); }); _upgHP.onClick.AddListener(() => { checkInfoAndShow.Invoke( player.UpgradeHouse(_scene.MapGridGenerator.CurPoint, HouseInfo.UpgradeType.HP) ); }); _upgSpeed.onClick.AddListener(() => { checkInfoAndShow.Invoke( player.UpgradeHouse(_scene.MapGridGenerator.CurPoint, HouseInfo.UpgradeType.Speed) ); }); _disCard.onClick.AddListener(() => { var houseInfo = player.DiscardHouseMonster(_scene.MapGridGenerator.CurPoint); checkInfoAndShow.Invoke(houseInfo); }); _uniAttBtn.onClick.AddListener(() => { doActionOrShowErrMsg(() => player.DoUniqueSkill(Player.Player.UniqueSkill.Attack)); }); _uniDefBtn.onClick.AddListener(() => { doActionOrShowErrMsg(() => player.DoUniqueSkill(Player.Player.UniqueSkill.Defense)); }); }