private void attack() { // check if the tower has reloaded already if (Time.time - lastFire > fireRate) { // tower is ready to shoot // check if target is still in range if (target != null && target.activeSelf && Vector3.Distance(transform.position, target.transform.position) < range + gameManager.rangeAdd) { // target is still in range // grab a new arrow to shoot GameObject go = ObjectPoolerManager.Instance.ArrowPooler.GetPooledObject(); // place it at tower position go.transform.position = transform.position; go.transform.rotation = transform.rotation; // set direction of arrow towards target go.GetComponent<Arrow>().setTarget(target.transform); // activate arrow go.SetActive(true); } else { // target is no more in range, change state to searching again State = TowerState.Searching; } // update the last fired time lastFire = Time.time; } }
public void ResetTower() { percentRed = 0f; percentBlue = 0f; towerState = TowerState.neutral; RpcSetTowerState(towerState); }
void Start() { gameManager = GameObject.Find("GameManager(Clone)").GetComponent<GameManager>(); //There is no monster in range at the start State = TowerState.Searching; }
void Update() { // check the state of the tower if (State == TowerState.Searching) { // tower is searching for an enemy // check if there are enemies on the map if (GameManager.Instance.monsterList.Where(x => x != null).Count() == 0) return; // set target to closest enemy target = GameManager.Instance.monsterList.Where(x => x != null).Aggregate((current, next) => Vector2.Distance(current.transform.position, transform.position) < Vector2.Distance(next.transform.position, transform.position) ? current : next); // check if the target is in range if (target != null && target.activeSelf && Vector3.Distance(transform.position, target.transform.position) < range + gameManager.rangeAdd) { // target is in range, set state to targeting State = TowerState.Targeting; } } else if (State == TowerState.Targeting) { // tower is targeting enemy // check if target is still in range if (target != null && Vector3.Distance(transform.position, target.transform.position) < range + gameManager.rangeAdd) { // shoot at it attack(); } else { // enemy left range, search again State = TowerState.Searching; } } }
protected override void Update() { base.Update(); if (dead) { return; } switch (state) { case TowerState.Idle: if (GetTarget()) { state = TowerState.Rotating; } break; case TowerState.Rotating: if (!CheckTarget() && !GetTarget()) { state = TowerState.Idle; break; } RotateWeapon(); if (CannonTargetAngle() <= 5f) { state = TowerState.Attacking; } break; case TowerState.Attacking: if (!CheckTarget()) { if (GetTarget()) { state = TowerState.Rotating; } else { state = TowerState.Idle; } break; } RotateWeapon(); if (CannonTargetAngle() > 10f) { state = TowerState.Rotating; } if (Time.time - attackTime >= 1 / fireRate) { FireCannon(); attackTime = Time.time; } break; } }
private void CheckDistance() { var dist = Vector3.Distance(_transform.position, CurrentTarget.transform.position); if (dist > ShootingRadius && State == TowerState.Firing) { CurrentTarget = null; State = TowerState.Patroling; } }
// Use this for initialization void Start() { tower = GameObject.Find("Tower"); other = tower.GetComponent <TowerState>(); tempScore = other.getScore(); spawnTime = 3.8f; screenBounds = Camera.main.ScreenToWorldPoint(new Vector3(Screen.width, Screen.height, Camera.main.transform.position.z)); coroutine = StartCoroutine(zombieWave()); cooldownItem = 12f; }
internal void DestroyTower() { GameObject.Destroy(Tower); var explosion = Instantiate(TowerExplosionPrefab, transform.position, Quaternion.identity); GameObject.Destroy(explosion, 1.5f); TowerState = null; Type = TowerTypes.Unknown; IsEmpty = true; }
public void UpdateUI(SpawnTower selectedBlock, TowerState selectedTowerState) { sellButton.UpdateButton(selectedTowerState.Price); upgradeButton.UpdateButton(selectedTowerState.Type, selectedTowerState.TowerLevel); towerMenu.transform.position = PositionHelper.OnTop( selectedBlock.Tower.transform, selectedBlock.Tower.transform.localScale.y ); }
//---ゲームクリア----- /// <summary> /// フロアをすべてクリアした /// </summary> private void FloorAllClear() { GameClearEventStert(); DestoryAnderObj(); EPSystem[floorNamber].TowerEnd(); StageEffect.EffectAllStop(); SEMaster.Play(clearSE); BGMMaster.CangeBGM(clearBGM); towerState = TowerState.GameClearEnd; }
void Start() { tower = GameObject.Find("Tower"); other = tower.GetComponent <TowerState>(); zomwalk = gameObject.GetComponent <ZomWalk>(); animator = GetComponent <Animator>(); audioSource = GetComponent <AudioSource>(); minSpeed = Convert.ToDouble(0.03); maxSpeed = Convert.ToDouble(0.2); }
/// <summary> /// ポーズの終了 /// </summary> private void PoseEnd() { SEMaster.Play(KeyInputSE.keyInoutSE.GetClip(KeyInputSE.Type.Cancel)); Time.timeScale = 1; //再開後にキーの情報が残っているので解放 KeyLoader.keyLoader.KeyRelease(); towerState = backTowerState; keyCanvas.SetActive(true); BGMMaster.Play(); }
private void ClickOnBuildBlock() { if (_selectedBlock.IsFreeBlock) { Messenger.Broadcast(GameEvent.STORE_OPEN); } else { _selectedTowerState = _selectedBlock.Tower.GetComponent <TowerState>(); OpenUpdateSellMenu(); } }
private GeneDetailedResult GetGeneResult(TowerState towerState, Gene gene, int pathLength, int maximumTurns) { var simulator = new Simulator(pathLength, maximumTurns, towerState.Cannons, towerState.Archers); var result = simulator.Simulate(new MyGeneParser(gene)); return(new GeneDetailedResult { Gene = gene, NormalizedGene = gene.GenomesList.Select(x => MyGeneParser.GeneToTroopCount(x)).ToArray(), Result = result, }); }
public TowerState GetState() { var state = new TowerState { sprite = sprite, shootPower = shootPower, fireRate = fireRate, fireRange = fireRange }; return(state); }
bool SetActive() { if (!canBePlaced) { return(false); } currentState = TowerState.Active; canBePlaced = false; canFire = true; myCC.enabled = true; enemiesInRange = new List <Enemy> (); return(true); }
// Update is called once per frame void Update() { if (currentState != towerState) { StartCoroutine(towerState.UpdateState()); currentState = towerState; } if (currentHealth <= 0) { Destroy(this.gameObject); } }
/// <summary> /// ポーズの開始 /// </summary> private void PoseStart() { SEMaster.Play(KeyInputSE.keyInoutSE.GetClip(KeyInputSE.Type.Pause)); Time.timeScale = 0; KeyLoader.keyLoader.KeyRelease(); backTowerState = towerState; towerState = TowerState.Pose; gamePoiseUI.GamePauseUIStart(); XInputDotNetPure.GamePad.SetVibration(XInputDotNetPure.PlayerIndex.One, 0, 0); keyCanvas.SetActive(false); BGMMaster.Stop(); }
void updateTowerState() { var isStationary = stackedBoxesAreStationary(); if (isStationary) { setStationary(); } else { towerState = TowerState.MOVING; } }
private TowerStateResult GetTowerStateResult(TowerState towerState, List <List <Gene> > bestGenes, int pathLength, int maximumTurns) { var result = new TowerStateResult { TowerState = towerState, }; foreach (var item in bestGenes) { result.Genes.Add(GetGeneResult(towerState, item[0], pathLength, maximumTurns)); } return(result); }
/// <summary> /// ゲームの開始時の処理 /// </summary> void GameStart() { if (!FadeIO.fadeIo.fadeNow) { readyUI.ReadyUIUpdate(); if (readyUI.IsReadyTimeEnd()) { TimeCounter.timeCounter.TimeCountStart(); EPSystem[0].EPSStart(); towerState = TowerState.TowerUpdate; player.controlOn = true; } } }
/// <summary> /// Update the tower's health value and update its health display /// </summary> /// <param name="value">The new health value</param> private void SetHealth(int value) { health = value; healthBar.UpdateDisplay(health, MAX_HEALTH); if (health < 1) { health = 0; if (!GameManager.Instance.muteSFX) { FMODUnity.RuntimeManager.PlayOneShot(turretDeath); } currentState = TowerState.Dying; } }
/// <summary> /// Update the tower's health value and update its health display /// </summary> /// <param name="value">The new health value</param> private void SetHealth(int value) { health = value; healthBar.UpdateDisplay(health, MAX_HEALTH); if (health < 1) { health = 0; if (!GameManager.Instance.muteSFX) { audioSource.pitch = DEATH_PITCH; audioSource.PlayOneShot(deathSound, DEATH_VOLUME * GameManager.Instance.sfxVolume); } currentState = TowerState.Dying; } }
private void Start() { Application.targetFrameRate = 60; Time.timeScale = 1; floorNamber = 0; EPSystem[0].EPSFOne(); BlockObj.playerDeid = false; StageEffect.EffectActive(floorNamber); towerState = TowerState.GameStart; FadeIO.fadeIo.FadeIn(40); SEMaster.AudioFadeInStart(40); BGMMaster.AudioFadeInStart(40); }
// hpのスライダーを更新 void HpUpdate() { slider.value = hp; if (hp <= 0) { towerState = TowerState.Destroy; this.GetComponent <Renderer>().material = destroyMaterial; if (myORpc) { gameManager.MyTowerCount = 1; } else if (!myORpc) { gameManager.PcTowerCount = 1; } } }
/// <summary> /// クリア時の処理 /// </summary> private void FloorClear() { floorNamber++; cameraOp.nam = floorNamber; cameraOp.SetTergetPos(); DestoryAnderObj(); EPSystem[floorNamber - 1].TowerEnd(); EPSystem[floorNamber].SetEndBlock(towers[floorNamber - 1].hitBlock); EPSystem[floorNamber].EPSStart(); EPSystem[floorNamber].CamaeraUpStert(); StageEffect.EffectActive(floorNamber); floorUI.setTowerNam(floorNamber); towerState = TowerState.CametaUpUpdate; }
public void Initialise(ComputerLane computerlane, Team blueTeam, Team redTeam) { // set initial colours percentRed = 0f; percentBlue = 0f; towerState = TowerState.neutral; RpcSetTowerState(towerState); captureBarHeight = (Screen.height / 150) < 3? 3 : Screen.height / 150; captureBarHeight -= captureBarHeight % 3; captureBarHeight = 5 * captureBarHeight / 3; yOffset = captureBarOffset * captureBarHeight; entityLocation = Camera.main.WorldToScreenPoint(gameObject.transform.position); captureBarLength = (percentRed / 100) * captureBarInitialLength; this.computerLane = computerlane; this.blueTeam = blueTeam; this.redTeam = redTeam; }
public virtual GameObject PutDown(Vector3 centerPos) { Point point = GameManager.GetPointByPos(centerPos); if (point.towerType == TowerType.UpGrade) { (point.BaseTower as UpGradeTower).PutDown(centerPos); } else { SetPickableAndTower(); } sp.sortingOrder = points[0].Y; state = TowerState.Idle; transform.SetParent(null); transform.position = centerPos; GameManager.ChangeGameState(GameState.PlayGame); return(gameObject); }
private void FindEnemies() { var hitColliders = Physics.OverlapSphere(_transform.position, SearchRadius).Where(obj => obj.tag == "Enemy"); var maxDist = float.MaxValue; foreach (var hitCollider in hitColliders) { var dist = Vector3.Distance(_transform.position, hitCollider.transform.position); if (!(dist < maxDist)) { continue; } maxDist = dist; CurrentTarget = hitCollider.gameObject; } if (CurrentTarget != null) { State = TowerState.Firing; } }
//Initialize vars private void Awake() { //Initialize values IsMoveable = false; timeSinceLastShot = 0.0f; currentState = TowerState.Alive; overlapSphereCols = new Collider[30]; target = null; Level = 0; //Find children spriteObj = transform.Find("Sprite").GetComponent <SpriteRenderer>(); shootSprite = transform.Find("Sprite/bigBullet").gameObject; radiusDisplay = transform.Find("RadiusDisplay").gameObject; towerRadiusMatInst = radiusDisplay.GetComponent <MeshRenderer>().material; healthBar.Init(); SetHealth(MAX_HEALTH); expBar.Init(); }
public void DetectEnemy(GameObject target) { Debug.Log("Detect Enemy Called"); switch (tState) { case TowerState.Idle: LastShootTime = Time.time; this.Target = target; tState = TowerControl.TowerState.Attack; break; case TowerState.Attack: this.NextTarget = target; break; } }
private bool EnoughGenerations(List <double> bestScores, TowerState state) { if (bestScores.Count < 11) { return(false); } if (bestScores.Count > maximumGenerations) { Console.WriteLine("\rA gene has failed to converge for: "); Console.WriteLine("Cannons: <" + String.Join(",", state.Cannons) + ">"); Console.WriteLine("Archers: <" + String.Join(",", state.Archers) + ">"); return(true); } if ((bestScores[bestScores.Count - 1] == bestScores[bestScores.Count - 10]) && (bestScores[bestScores.Count - 1] != 0)) { return(true); } return(false); }
IEnumerator Fire() { bool inRange = true; while (inRange) { FireWeapon(); yield return(new WaitForSeconds(cooldown)); if (currentTarget == null) { inRange = false; } else { inRange = Vector3.Distance(transform.position, currentTarget.transform.position) < range; } } state = TowerState.Hunting; StartCoroutine(Hunt()); }
private List <Gene> FindBestGenes(TowerState state, int pathLength, int geneLength, int maximumTurns) { var gg = new GenerationGenerator(generationCount, geneLength); var generation = gg.RandomGeneration(); var simulator = new Simulator(pathLength, maximumTurns, state.Cannons, state.Archers); var bestScores = new List <double>(); while (!EnoughGenerations(bestScores, state)) { Parallel.ForEach(generation, (gene) => { var result = simulator.Simulate(new MyGeneParser(gene)); gene.Score = scoringPolicy.CalculateTotalScore(result); }); bestScores.Add((double)generation.Select(x => x.Score).Max()); generation = gg.Genetic(generation); } return(generation); }
public Task<bool> TestEnum(ulong pid, TowerState state) { throw new NotImplementedException(); }
// Use this for initialization void Start() { lastFireTime = 0; state = TowerState.Hunting; StartCoroutine(Hunt()); }
void BuildTower() { if (rows.Count > 0) { foreach (GameObject obj in rows) { Destroy(obj); } } var blockSize = ((BoxCollider)blockModel.collider).size; for (int y = 0; y < 4; y++) { GameObject stabilizer = new GameObject(); stabilizer.transform.parent = transform; stabilizer.AddComponent<BoxCollider>(); var height = blockSize.y * rowsNumber; ((BoxCollider)stabilizer.collider).size = new Vector3(blockSize.x, height, blockSize.x); ((BoxCollider)stabilizer.collider).center = new Vector3(0, height / 2, 0); stabilizer.transform.localPosition = new Vector3(blockSize.x, 0, 0); stabilizer.transform.RotateAround(transform.position, stabilizer.transform.up, 90 * y); stabilizers.Add(stabilizer); } stabilizersTimer = 0f; while (rows.Count < rowsNumber) { var row = AddRow(); for (int z = -1; z <= 1; z++) { GameObject block = (GameObject)Instantiate(blockModel); block.transform.parent = row.transform; block.transform.localRotation = Quaternion.identity; block.transform.localPosition = new Vector3(0, 0, z * blockSize.z); var manager = block.GetComponent<BlockManager>(); manager.Faded += HandleBlockFaded; manager.Fading += HandleBlockFading; manager.Dropped += HandleBlockDropped; } } HandleTopBlockPlacerDestroyed(this, new EventArgs()); State = TowerState.REMOVING; }
public InvokeOperation<Boolean> TestEnum(UInt64 pid, TowerState state) { return serviceDelegateStub.Invoke<Boolean>(MethodId.TestEnum, null, pid, state); }
void HandleBlockFaded(object sender, BlockEventArgs e) { State = TowerState.PLACING; }
public Task<bool[]> TestArray(ulong[] pids, TowerState state) { throw new NotImplementedException(); }
public Task<Dictionary<bool, byte[]>> TestDict(Dictionary<bool, PlayerInfo> pids, TowerState state) { throw new NotImplementedException(); }
private void RpcSetTowerState(TowerState towerState) { if (towerState == TowerState.neutral){ neutralTower.SetActive(true); cowboyTower.SetActive(false); vikingTower.SetActive(false); }else if (towerState == TowerState.red){ neutralTower.SetActive(false); cowboyTower.SetActive(false); vikingTower.SetActive(true); }else{ neutralTower.SetActive(false); cowboyTower.SetActive(true); vikingTower.SetActive(false); } this.towerState = towerState; }
private void UpdateCaptureValues() { HeroCapturing heroCapturing = CmdHeroesCapturing(captureRadius); // if red capturing if ((towerState != TowerState.red || (towerState == TowerState.red && percentRed < 100)) && heroCapturing == HeroCapturing.red){ if (percentBlue > 0){ percentBlue -= captureRate; }else{ percentRed += captureRate; } // if blue capturing }else if((towerState != TowerState.blue || (towerState == TowerState.blue && percentBlue < 100)) && heroCapturing == HeroCapturing.blue){ if (percentRed > 0){ percentRed -= captureRate; }else{ percentBlue += captureRate; } // when left tend to current state }else if (heroCapturing == HeroCapturing.none) if (towerState == TowerState.red && percentRed < 100f) percentRed += (captureRate * 0.5f); if (towerState == TowerState.blue && percentBlue < 100f) percentBlue += (captureRate * 0.5f); if (towerState == TowerState.neutral){ if (percentRed > 0) percentRed -= (captureRate * 0.25f); if (percentBlue > 0) percentBlue -= (captureRate * 0.25f); } // update capture value and rpc if changed TowerState oldTowerState = towerState; if (percentRed >= 100f && oldTowerState == TowerState.neutral){ redTeam.CapturedTower(this); towerState = TowerState.red; percentRed = 100f; UpdateCaptureStats(captureRadius, "redHero"); }else if (percentBlue >= 100f && oldTowerState == TowerState.neutral){ blueTeam.CapturedTower(this); towerState = TowerState.blue; percentBlue = 100f; UpdateCaptureStats(captureRadius, "blueHero"); }else if (percentRed <= 0 && percentBlue <= 0 && oldTowerState != TowerState.neutral){ if (oldTowerState == TowerState.blue){ blueTeam.LostTower(this); }else{ redTeam.LostTower(this); } towerState = TowerState.neutral; percentRed = 0; percentBlue = 0; } if (towerState != oldTowerState) RpcSetTowerState(towerState); }
public InvokeOperation<Boolean[]> TestArray(UInt64[] pids, TowerState state) { return serviceDelegateStub.Invoke<Boolean[]>(MethodId.TestArray, null, pids, state); }
public Task<List<bool>> TestList(List<bool> pids, TowerState state) { throw new NotImplementedException(); }
// game over void HandleBlockDropped(object sender, BlockEventArgs e) { if (!e.transform.parent.name.Contains("Row #1")) State = TowerState.FALLING; }
public InvokeOperation<List<Boolean>> TestList(List<Boolean> pids, TowerState state) { return serviceDelegateStub.Invoke<List<Boolean>>(MethodId.TestList, null, pids, state); }
void HandleBlockPlaced(object sender, BlockEventArgs e) { e.Manager.Faded += HandleBlockFaded; e.Manager.Fading += HandleBlockFading; e.Manager.Dropped += HandleBlockDropped; State = TowerState.REMOVING; }
public InvokeOperation<Dictionary<Boolean, Byte[]>> TestDict(Dictionary<Boolean, PlayerInfo> pids, TowerState state) { return serviceDelegateStub.Invoke<Dictionary<Boolean, Byte[]>>(MethodId.TestDict, null, pids, state); }