private void SpawnUnit() { var bounds = _groundPlane.GetComponent <MeshRenderer>().bounds; var unitObject = GameObjectFactory.GetPrimitive <SimpleUnit>(PrimitiveType.Cube); unitObject.name += _units.Count.ToString(); _units.Add(unitObject); var unitPosition = new Vector3(Random.Range(bounds.min.x, bounds.max.x), 1, Random.Range(bounds.min.z, bounds.max.z)); unitObject.transform.position = unitPosition; unitObject.gameObject.AddComponent <Rigidbody>(); unitObject.GetComponent <MeshRenderer>().material.color = Random.ColorHSV(); unitObject.OnHit = unit => { if (unit.Health <= Defaults.ProjectileDamage) { Destroy(unit.gameObject); } unit.Health -= Defaults.ProjectileDamage; var message = unit.Health > 0 ? $"{unit.name}: {unit.Health}" : LogExtension.BoldRed($"{unit.name}: {unit.Health}"); SendMessage(new UnitDataUpdateMessage { Message = message }); }; }
private void Start() { State = ERootState.Idle; _uiManager = FindObjectOfType <UIManager>(); Assert.IsNotNull(_uiManager, LogExtension.BoldRed(Defaults.UIManagerNotFound)); Assert.IsNotNull(_uiManager.LaunchButton, LogExtension.BoldRed(Defaults.LaunchButtonIsNotSet)); Assert.IsNotNull(_uiManager.HaltButton, LogExtension.BoldRed(Defaults.HaltButtonIsNotSet)); _uiManager.LaunchButton.onClick.AddListener(LaunchAction()); _uiManager.PauseButton.onClick.AddListener(PauseAction()); _uiManager.HaltButton.onClick.AddListener(HaltAction()); Debug.Log(LogExtension.Bold("[RootController][Start] Complete")); }