// Update is called once per frame void Update() { // Apply gravity velocity.y += gravity * Time.deltaTime; // Inflict damage if (enemyBullet) { if (controller.collidesWithPlayer() && controller.getHitObject()) { Player p = controller.getHitObject().GetComponent <Player>(); if (p && !p.IsDead()) { p.TakeDamage(damage); } } } else { if (controller.collidesWithEnemy() && controller.getHitObject()) { Enemy e = controller.getHitObject().GetComponent <Enemy>(); if (e && !e.IsDead()) { e.TakeDamage(damage); if (attracts) { Destroy(gameObject); e.GetController().Move(-(velocity * Time.deltaTime * 0.1f), false); } if (repels) { e.GetController().Move(velocity * Time.deltaTime * 0.1f, false); } } } if (controller.collidesWithTrigger() && controller.getHitObject()) { Switch s = controller.getHitObject().GetComponent <Switch>(); if (s && !s.IsLevelExit()) { s.Press(); } } } // Destroy on collision or if it's out of range if (controller.HasCollisions() || Mathf.Abs(transform.position.x - origin.x) > range || Mathf.Abs(transform.position.y - origin.y) > range) { Destroy(gameObject); } // Movement controller.Move(velocity * Time.deltaTime, dir); //controller.Move (dir * speed, false); //transform.position = new Vector3(transform.position.x + 0.04f * dir.x,transform.position.y + 0.04f * dir.y, transform.position.z); }