示例#1
0
    void Update()
    {
        // 3 - Retrieve axis information
        float inputX = Input.GetAxis("Horizontal");
        float inputY = Input.GetAxis("Vertical");

        // 4 - Movement per direction
        movement = new Vector2(
            speed.x * inputX,
            speed.y * inputY);

        // 5 - Shooting
        bool shoot = Input.GetButtonDown("Fire1");
        //shoot |= Input.GetButtonDown("Fire2");
        // Careful: For Mac users, ctrl + arrow is a bad idea
        bool areaShoot = Input.GetButtonDown("Fire3");

        //areaShoot |= Input.GetButtonDown("Fire1");

        if (shoot)
        {
            WeaponScript weapon = GetComponent <WeaponScript>();
            if (weapon)
            {
                // false because the player is not an enemy
                weapon.Attack(false);
            }
        }

        if (areaShoot)
        {
            AreaWeaponScript weapon = GetComponent <AreaWeaponScript>();
            if (weapon)
            {
                // false because the player is not an enemy
                weapon.Attack(false);
            }
        }

        var currentPos = transform.position;

        // 6 - Make sure we are not outside the camera bounds
        var dist = (currentPos - Camera.main.transform.position).z;

        var leftBorder = Camera.main.ViewportToWorldPoint(
            new Vector3(0, 0, dist)
            ).x;

        var rightBorder = Camera.main.ViewportToWorldPoint(
            new Vector3(1, 0, dist)
            ).x;

        var topBorder = Camera.main.ViewportToWorldPoint(
            new Vector3(0, 0, dist)
            ).y;

        var bottomBorder = Camera.main.ViewportToWorldPoint(
            new Vector3(0, 1, dist)
            ).y;

        transform.position = new Vector3(
            Mathf.Clamp(currentPos.x, leftBorder, rightBorder),
            Mathf.Clamp(currentPos.y, topBorder, bottomBorder),
            currentPos.z
            );
    }
示例#2
0
    void OnCollisionEnter2D(Collision2D collision)
    {
        bool damagePlayer = false;

        // Collision with enemy
        EnemyScript enemy = collision.gameObject.GetComponent <EnemyScript>();

        if (enemy)
        {
            // Kill the enemy
            HealthScript enemyHealth = enemy.GetComponent <HealthScript>();
            if (enemyHealth)
            {
                enemyHealth.Damage(enemyHealth.hp);
            }

            //make explosion
            enemyHealth.ExplosionAnimation(explosionPrefab);
            SoundEffectsHelper.Instance.MakeDamageSound();


            damagePlayer = true;
        }

        // Damage the player
        if (damagePlayer)
        {
            HealthScript playerHealth = GetComponent <HealthScript>();
            if (playerHealth)
            {
                playerHealth.Damage(1);
            }
        }


        // Collision with area shot ammo
        AreaAmmoScript ammo = collision.gameObject.GetComponent <AreaAmmoScript>();

        if (ammo)
        {
            AreaWeaponScript weapon = GetComponent <AreaWeaponScript>();
            if (weapon)
            {
                weapon.ammunition += 1;
                ammoCounter.IncreaseCounter();
            }
            Destroy(ammo.gameObject);
        }

        // Collision with time stop
        TimeStopScript timeStop = collision.gameObject.GetComponent <TimeStopScript>();

        if (timeStop)
        {
            // disable box collider
            BoxCollider2D bc = timeStop.gameObject.GetComponent <BoxCollider2D>();
            if (bc)
            {
                bc.enabled = false;
            }

            // disable renderer
            SpriteRenderer sr = timeStop.gameObject.GetComponent <SpriteRenderer>();
            if (sr)
            {
                sr.enabled = false;
            }

            timeStop.StopTime();
        }
    }