Ejemplo n.º 1
0
    void Update()
    {
        Vector2 mouseDelta = new Vector2(Input.GetAxisRaw("Mouse X"), Input.GetAxisRaw("Mouse Y"));

        m_Pitch -= mouseDelta.y * m_MouseSensitivity.y;
        m_Yaw   += mouseDelta.x * m_MouseSensitivity.x;

        m_Camera.localRotation = Quaternion.Euler(m_Pitch, m_Yaw, 0);

        if (pointingToMove)
        {
            Ray        ray = new Ray(m_PointerOriginTransform.position, m_PointerOriginTransform.forward);
            RaycastHit hit;
            float      dist = 200f;
            if (Physics.Raycast(ray, out hit, float.MaxValue, m_TowerMask))
            {
                m_SelectedTower = hit.collider.GetComponent <PlayerTower>();
                m_SelectedTower.SetSelection(true);
                dist = hit.distance;
            }
            else
            {
                m_SelectedTower?.SetSelection(false);
                m_SelectedTower = null;
            }
            Vector3 hitPosition = ray.origin + ray.direction * dist;
            m_PointerLine.SetPositions(new [] { m_PointerOriginTransform.position, hitPosition });
        }
    }
Ejemplo n.º 2
0
    void OnCollisionEnter2D(Collision2D collision)
    {
        if (collision.gameObject.name == "PlayerShot")
        {
            rb.freezeRotation = false;
            transform.right   = startV;
            rb.freezeRotation = true;
            //transform.Rotate(Vector3.right, startZ - transform.rotation.z);
        }
        else if (collision.gameObject.name == "left tower")
        {
            PlayerTower tower = collision.gameObject.GetComponent <PlayerTower>();
            tower.health = tower.health - this.power;

            Destroy(gameObject);
        }
    }
Ejemplo n.º 3
0
 public void DoGameCycle()
 {
     if (Monsters.TrueForAll(monster => monster.Cycles.DeathCyclesDid >= 60))
     {
         PlayerTower.ChangeHealState();
         CurrentWave++;
         if ((CurrentWave - 3) % 5 == 0 && CurrentWave > 0 && (CurrentWave - 3) % 10 != 0)
         {
             Monsters.Add(new Monster(EntityType.King, GateCoordinates[1], this));
         }
         else if (CurrentWave > 0 && (CurrentWave - 3) % 10 == 0)
         {
             Monsters.Add(new Monster(EntityType.Igni, GateCoordinates[1], this));
         }
         else
         {
             Monsters = this.CreateRandomMonstersAsync((CurrentWave - 3) / 5 + 1);
         }
         MonsterToAdd.Clear();
     }
     else if (PlayerTower.HealthAmount > 0)
     {
         PlayerTower.ChangeState();
         while (MonsterToAdd.Count != 0)
         {
             Monsters.Add(MonsterToAdd.Dequeue());
         }
         foreach (var monster in Monsters)
         {
             monster.Act(this);
         }
     }
     else
     {
         IsGameFinished = true;
     }
 }
Ejemplo n.º 4
0
 private void Start()
 {
     m_PlayerTower      = FindObjectOfType <PlayerTower>();
     m_GameDataListener = FindObjectOfType <GameDataListener>();
 }