示例#1
0
    // Update is called once per frame
    void Update()
    {
        if (Time.time - collision_time > collision_timespan && has_collided == true)
        {
            has_collided = false;
            hit_animator.SetBool("Ship Hit", false);
        }

        if (is_asteroid is true)
        {
            var projectiles = FindObjectsOfType <projectile_move>();
            foreach (projectile_move projectile in projectiles)
            {
                var projectile_relative_position = Mathf.Pow(projectile.transform.position.x - transform.position.x, 2) + Mathf.Pow(projectile.transform.position.y - transform.position.y, 2);
                if (projectile_relative_position < collision_boundary)
                {
                    game.Play_Crash_Sound();
                    has_collided = true;
                    Destroy(projectile.gameObject);
                    score_manager.Update_Score(hit_score);
                    childmaker.Instantiate_Child(transform);
                    Destroy(gameObject);
                }
            }
        }
        else
        {
            var asteroids = FindObjectsOfType <asteroid_move>();
            foreach (asteroid_move asteroid in asteroids)
            {
                var asteroid_relative_position = Mathf.Pow(asteroid.transform.position.x - transform.position.x, 2) + Mathf.Pow(asteroid.transform.position.y - transform.position.y, 2);
                if (asteroid_relative_position < collision_boundary && has_collided == false)
                {
                    game.Play_Crash_Sound();
                    live.reduce_live(1);
                    has_collided = true;
                    hit_animator.SetBool("Ship Hit", true);
                    collision_time = Time.time;
                }
            }
        }
    }