void CreateOwnUnit(string id, Vector2 destPos) { var spawnPos = destPos; var setting = UnitSettingLoader.GetSetting(id); if (!setting.isTower) { spawnPos.x = 0; } if (currentCost < setting.cost) { return; } UpdateCost(-setting.cost); var unit = CreateUnit(id, spawnPos, destPos, UNITASIGN.OWN); if (Network.Client.Instance != null) { Network.Client.Instance.Send(new Network.SpawnUnit { id = id, spawnPosition = spawnPos, destinationPosition = destPos, }); } // キャラ配置SE再生 AudioManager.Instance.PlaySE(AudioManager.SE.CHARACTER_PUT_CLICK); }
//! ユニットを生成して返すだけ private Unit CreateUnit(string id, Vector2 spawnPos, Vector2 clickPos, UNITASIGN asign) { var setting = UnitSettingLoader.GetSetting(id); var unit = Instantiate(unitPrefab, asign == UNITASIGN.OWN ? unitParent : enemyParent, false); if (!setting.isTower) { var controller = Resources.Load <RuntimeAnimatorController> ("Animation/" + setting.appearanceId + "_anime"); unit.GetComponent <Animator> ().runtimeAnimatorController = controller; } else { var sprite = Resources.Load <Sprite> ("Textures/" + setting.appearanceId); unit.GetComponent <UnityEngine.UI.Image> ().sprite = sprite; } unit.GetComponent <RectTransform> ().anchoredPosition = spawnPos; unit.SetParameter(UnitSettingLoader.GetSetting(id), clickPos, GetNearEnemy, GetNearEnemyTower, Summon); unitTable [asign].Add(unit); if (asign == UNITASIGN.OPPONENT) { unit.GetComponent <UnityEngine.UI.Image> ().color = Color.black; } if (asign == UNITASIGN.OWN && unit.isTower) { var image = unit.transform.Find("Range").GetComponent <UnityEngine.UI.Image> (); image.rectTransform.sizeDelta = Vector2.one * unit.effectRange; image.color = new Color(1, 1, 1, 0.2f); } return(unit); }
void SetSpawnObservable() { if (spawnDisposable != null) { spawnDisposable.Dispose(); } if (currentUnitButton == null) { return; } var time = (UnitSettingLoader.GetSetting(currentUnitButton.ButtonId).hitPoint / 2f) * 0.01f; spawnDisposable = background.OnClickAsObservable().ThrottleFirst(System.TimeSpan.FromSeconds(time)).Subscribe(_ => { if (!gameStart) { return; } if (currentUnitButton == null || string.IsNullOrEmpty(currentUnitButton.ButtonId)) { return; } CreateOwnUnit(currentUnitButton.ButtonId, Input.mousePosition); }).AddTo(gameObject); }
protected override void Awake() { unitTable.Add(UNITASIGN.OWN, new List <Unit> ()); unitTable.Add(UNITASIGN.OPPONENT, new List <Unit> ()); gameTimeLabel.text = string.Format("Time : {0}", gameTotalTime); UpdateCost(totalCost); System.IDisposable disposable = null; int count = 4; disposable = Observable.Interval(System.TimeSpan.FromSeconds(1)).Subscribe(_ => { count--; countDown.text = count.ToString(); if (count == 0) { countDown.text = "Start!!"; } if (count == -1) { disposable.Dispose(); countDown.text = ""; gameStart = true; SetSpawnObservable(); SetObservable(); } }).AddTo(gameObject); var settings = new List <string> () { "red_large_carrier", "red_small_carrier", "red_unit_1", "red_unit_2", }; for (int i = 0; i < 4; i++) { var setting = UnitSettingLoader.GetSetting(settings [i]); buttonParent.Find("UnitButton_" + (i + 1).ToString()).GetComponent <UnitSpawn> ().SetParameter(setting.id); } if (Network.Client.Instance == null) { return; } Network.Client.Instance.onCloseSession += CloseSession; Network.Client.Instance.Reciever.OnRecvSpawnUnit += OnRecvSpawnUnit; closeSession.Where(x => x).ObserveOnMainThread().Subscribe(_ => { UnityEngine.SceneManagement.SceneManager.LoadScene("Title"); }); }
private void CreateEnemyUnit(string id, Vector2 destPos) { destPos = new Vector2(Mathf.Abs(destPos.x - Screen.width), destPos.y); var spawnPos = destPos; if (!UnitSettingLoader.GetSetting(id).isTower) { spawnPos.x = Screen.width; } CreateUnit(id, spawnPos, destPos, UNITASIGN.OPPONENT); }
public void SetParameter(string id) { UnitButtonID = id; UnitSettings setting = UnitSettingLoader.GetSetting(UnitButtonID); CoinCostText.text = setting.cost.ToString(); var sprite = Resources.Load <Sprite> ("Textures/" + setting.appearanceId); transform.Find("Image").GetComponent <UnityEngine.UI.Image>().sprite = sprite; }