public void checkSpots() { SpotChecker c = new SpotChecker(); c.check(0); c.check(1); c.check(1375228800); c.check(1 << 30); c.check(1 << 31); }
// Update is called once per frame public virtual void Update() { float distToTower = Vector3.Distance(transform.position, TowerController.instance.target.position); if (isAlive) { if (distToTower > distance) { float step = speed * Time.deltaTime; transform.position = Vector3.MoveTowards(transform.position, TowerController.instance.target.position, step); } else { if (target == null) { target = TowerController.instance.GetSpot(gameObject, enemyType); } float newDistance = Vector3.Distance(transform.position, target.position.transform.position); if (newDistance > 0.1f) { float step = speed * Time.deltaTime; transform.position = Vector3.MoveTowards(transform.position, target.position.transform.position, step); } else { if (target.spotId > TowerController.instance.splitIn) { sprite.flipX = true; } else { sprite.flipX = false; } attacking = true; } } if (!attacking) { if (!source.isPlaying) { source.clip = walkSound[Random.Range(0, walkSound.Count)]; source.Play(); } } else { if (!source.isPlaying) { source.clip = attackSound[Random.Range(0, attackSound.Count)]; source.Play(); } } } }
private void Awake() { if (!instance) { instance = this; } else { Destroy(gameObject); return; } DontDestroyOnLoad(this); }
public SpotChecker GetSpot(GameObject enemy, EnemyType enemyType) { SpotChecker spotToSend = new SpotChecker(); float distance = 0; float tempDistance = 0; switch (enemyType) { case EnemyType.enemy1: spotToSend = inerSpots[0]; distance = Vector3.Distance(enemy.transform.position, spotToSend.position.transform.position); for (int i = 1; i < inerSpots.Count; i++) { if (inerSpots[i].enemyQuantity < spotToSend.enemyQuantity) { spotToSend = inerSpots[i]; } else if (inerSpots[i].enemyQuantity == spotToSend.enemyQuantity) { tempDistance = Vector3.Distance(enemy.transform.position, inerSpots[i].position.transform.position); if (tempDistance < distance) { spotToSend = inerSpots[i]; } } distance = Vector3.Distance(enemy.transform.position, spotToSend.position.transform.position); } break; case EnemyType.enemy2: spotToSend = farSpots[0]; distance = Vector3.Distance(enemy.transform.position, spotToSend.position.transform.position); for (int i = 1; i < farSpots.Count; i++) { if (farSpots[i].enemyQuantity < spotToSend.enemyQuantity) { spotToSend = farSpots[i]; } else if (farSpots[i].enemyQuantity == spotToSend.enemyQuantity) { tempDistance = Vector3.Distance(enemy.transform.position, farSpots[i].position.transform.position); if (tempDistance < distance) { spotToSend = farSpots[i]; } } distance = Vector3.Distance(enemy.transform.position, spotToSend.position.transform.position); } break; } spotToSend.enemyQuantity++; return(spotToSend); }