コード例 #1
0
    //Create DamagePopup
    public static DamagePopupScript Create(Vector3 position, int damageAmount, bool isCriticalHit)
    {
        Transform damagePopupTransform = Instantiate(InGameAssets.i.pfDamagePopup, position, Quaternion.identity);

        DamagePopupScript damagePopup = damagePopupTransform.GetComponent <DamagePopupScript>();

        damagePopup.Setup(damageAmount, isCriticalHit);

        return(damagePopup);
    }
コード例 #2
0
    private void EnemyCharacterHandlerOnShoot(object sender, EnemyCharacterHandler.OnShootEventArgs e)
    {
        Vector3 quadPosition = e.GunEndPosition;
        Vector3 quadSize     = new Vector3(0.5f, 1f);

        DmgPopupPos.Set(enemyDamagePopupPlace.position.x, enemyDamagePopupPlace.position.y, enemyDamagePopupPlace.position.z);

        //Player shot weapon
        if (Time.time > NextEnemyShootTime)
        {
            CreateWeaponTracer(e.GunEndPosition, e.ShootPosition);
            CreateShootFlash(e.GunEndPosition);

            ShellParticleSystemHandler.Instance.SpawnShell(quadPosition, new Vector3(1, 1));
            NextEnemyShootTime = Time.time + FireRate;


            //If any enemy hit
            RaycastHit2D raycastHit = Physics2D.Raycast(e.GunEndPosition,
                                                        (e.ShootPosition - e.GunEndPosition).normalized,
                                                        Vector3.Distance(e.GunEndPosition, e.ShootPosition));
            if (raycastHit.collider != null)
            {
                PlayerHealth playerHealth = raycastHit.collider.GetComponent <PlayerHealth>();
                if (playerHealth != null)
                {
                    //Hit enemy
                    int  DamageAmount = UnityEngine.Random.Range(10, 100);
                    bool isCritical   = UnityEngine.Random.Range(0, 100) < 30;
                    if (isCritical)
                    {
                        DamageAmount *= 2;
                    }
                    //Deal Dmg
                    playerHealth.TakeDamage(DamageAmount);
                    DamagePopupScript.Create(DmgPopupPos, DamageAmount, isCritical);
                }
            }
        }
    }
コード例 #3
0
    public void PlayerCharacterHandlerOnShoot(object sender, PlayerCharacterHandler.OnShootEventArgs e)
    {
        UtilsClass.ShakeCamera(0.5f, 0.25f);

        Vector3 quadPosition = e.gunEndPosition;
        Vector3 quadSize     = new Vector3(0.5f, 1f);

        DmgPopupPos.Set(playerDamagePopupPlace.position.x, playerDamagePopupPlace.position.y, playerDamagePopupPlace.position.z);

        CreateWeaponTracer(e.gunEndPosition, e.shootPosition);
        CreateShootFlash(e.gunEndPosition);

        ShellParticleSystemHandler.Instance.SpawnShell(quadPosition, new Vector3(1, 1));

        RaycastHit2D raycastHit = Physics2D.Raycast(e.gunEndPosition,
                                                    (e.shootPosition - e.gunEndPosition).normalized,
                                                    Vector3.Distance(e.gunEndPosition, e.shootPosition));

        if (raycastHit.collider != null)
        {
            EnemyHealth enemyHealth = raycastHit.collider.GetComponent <EnemyHealth>();
            isFollowing = true;
            StartCoroutine(WaitAfterFollowing());
            if (enemyHealth != null)
            {
                //Hit enemy
                int  DamageAmount = UnityEngine.Random.Range(10, 100);
                bool isCritical   = UnityEngine.Random.Range(0, 100) < 30;
                if (isCritical)
                {
                    DamageAmount *= 2;
                }
                //Deal Dmg
                enemyHealth.TakeDamage(DamageAmount);
                DamagePopupScript.Create(DmgPopupPos, DamageAmount, isCritical);
            }
        }
    }