Пример #1
0
    /*
     * private void Update() {
     *  TrySpawnDirtParticlesDelay();
     *  TrySpawnFootprintParticlesDelay();
     * }
     *
     * private void TrySpawnDirtParticlesDelay() {
     *  if (Time.time >= nextSpawnDirtTime) {
     *      if (characterAimHandler.IsMoving()) {
     *          DirtParticleSystemHandler.Instance.SpawnDirt(characterAimHandler.GetPosition() + new Vector3(0, -3f), characterAimHandler.GetMoveDir() * -1f);
     *          nextSpawnDirtTime = Time.time + .08f;
     *      }
     *  }
     * }
     *
     * private void TrySpawnFootprintParticlesDelay() {
     *  if (Time.time >= nextSpawnFootprintTime) {
     *      if (characterAimHandler.IsMoving()) {
     *          FootprintParticleSystemHandler.Instance.SpawnFootprint(characterAimHandler.GetPosition() + new Vector3(0, -3f), characterAimHandler.GetMoveDir() * -1f);
     *          nextSpawnFootprintTime = Time.time + .3f;
     *      }
     *  }
     * }
     */
    private void CharacterAimHandler_OnShoot(object sender, CharacterAimHandler.OnShootEventArgs e)
    {
        Vector3 quadPosition = e.gunEndPointPosition;

        Vector3 shootDir = (e.shootPosition - e.gunEndPointPosition).normalized;

        quadPosition += (shootDir * -1f) * 8f;

        float applyRotation = Random.Range(+95f, +85f);

        if (shootDir.x < 0)
        {
            applyRotation *= -1f;
        }

        Vector3 shellMoveDir = UtilsClass.ApplyRotationToVector(shootDir, applyRotation);

        ShellParticleSystemHandler.Instance.SpawnShell(quadPosition, shellMoveDir);

        /*
         * int uvIndex = Random.Range(0, 8);
         * int spawnedQuadIndex = AddQuad(quadPosition, rotation, quadSize, true, uvIndex);
         *
         * FunctionUpdater.Create(() => {
         *  quadPosition += new Vector3(1, 1) * 3f * Time.deltaTime;
         *  //quadSize +=  new Vector3(1, 1) * Time.deltaTime;
         *  //rotation += 360f * Time.deltaTime;
         *  UpdateQuad(spawnedQuadIndex, quadPosition, rotation, quadSize, true, uvIndex);
         * });
         */
    }
Пример #2
0
    private void CharacterAimHandler_OnShoot(object sender, CharacterAimHandler.OnShootEventArgs e)
    {
        // Player shot weapon
        Shoot_Flash.AddFlash(e.gunEndPointPosition);
        WeaponTracer.Create(e.gunEndPointPosition, e.shootPosition);
        UtilsClass.ShakeCamera(.6f, .05f);

        // Any enemy hit?
        RaycastHit2D raycastHit = Physics2D.Raycast(e.gunEndPointPosition, (e.shootPosition - e.gunEndPointPosition).normalized, Vector3.Distance(e.gunEndPointPosition, e.shootPosition));

        if (raycastHit.collider != null)
        {
            EnemyHandler enemyHandler = raycastHit.collider.gameObject.GetComponent <EnemyHandler>();
            if (enemyHandler != null)
            {
                // Hit enemy
                int  damageAmount = UnityEngine.Random.Range(100, 200);
                bool isCritical   = UnityEngine.Random.Range(0, 100) < 30;
                if (isCritical)
                {
                    damageAmount *= 2;
                }
                // Deal damage
                enemyHandler.Damage(this, damageAmount);
                DamagePopup.Create(enemyHandler.GetPosition(), damageAmount, isCritical);
            }
        }
    }
Пример #3
0
    private void CharacterAimHandler_OnShoot(object sender, CharacterAimHandler.OnShootEventArgs e)
    {
        Shoot_Flash.AddFlash(e.gunEndPointPosition);
        WeaponTracer.Create(e.gunEndPointPosition, e.shootPosition);
        UtilsClass.ShakeCamera(.6f, .05f);

        // Any enemy hit?
        RaycastHit2D raycastHit = Physics2D.Raycast(e.gunEndPointPosition, (e.shootPosition - e.gunEndPointPosition).normalized, Vector3.Distance(e.gunEndPointPosition, e.shootPosition));

        if (raycastHit.collider != null)
        {
            EnemyHandler enemyHandler = raycastHit.collider.gameObject.GetComponent <EnemyHandler>();
            if (enemyHandler != null)
            {
                enemyHandler.Damage(characterAimHandler);
            }
        }
    }