Пример #1
0
    private BlasterBullet SpawnBullet()
    {
        BlasterBullet blasterBullet = null;
        GameObject    go            = ObjectPool.Instance.GetObject(bulletType);

        if (go)
        {
            blasterBullet = go.GetComponent <BlasterBullet>();
            if (blasterBullet)
            {
                blasterBullet.transform.position = bulletSpawnPoint.position;
                blasterBullet.transform.forward  = transform.forward;
                blasterBullet.transform.rotation = Quaternion.Euler(0f, blasterBullet.transform.rotation.eulerAngles.y, 0f);

                blasterBullet.Initialize(bulletLiveTime, bulletSpeed, damage);

                if (wielderStats.gameObject.CompareTag(Strings.Tags.PLAYER))
                {
                    blasterBullet.SetShooterType(false);
                }
                else
                {
                    blasterBullet.SetShooterType(true);
                }
            }
            else
            {
                Debug.LogWarning("Blaster mod " + transform.name + " is trying to spawn a bullet that does not have a BlasterBullet component on it.");
            }
        }
        return(blasterBullet);
    }
Пример #2
0
        public void SpawnStupidPhotonProjectile(string name, Vector3 position, Quaternion rotation, Vector3 direction, float speed, int damage)
        {
            if (!PhotonNetwork.IsMasterClient)
            {
                return;
            }

            GameObject    bulletGO = PhotonNetwork.Instantiate(name, position, rotation);
            BlasterBullet bb       = bulletGO.GetComponent <BlasterBullet>();

            bb.MoveDirection = direction;
            bb.MoveSpeed     = speed;
            bb.Damage        = damage;
        }
Пример #3
0
        private void OnTriggerEnter(Collider other)
        {
            if (!PhotonNetwork.IsMasterClient)
            {
                return;
            }

            BlasterBullet b = other.gameObject.GetComponent <BlasterBullet>();

            if (b != null)
            {
                GameManager.Instance.MyGameBoard.DoDamageToTileEntity(this, b.Damage);
                //TakeDamage(b.Damage);
                //PhotonNetwork.Destroy(other.gameObject.GetComponent<PhotonView>());
            }
        }
Пример #4
0
    private BlasterBullet Shoot()
    {
        SFXManager.Instance.Play(shootSFX, transform.position);
        PoolObjectType poolObjType = PoolObjectType.VFXBlasterShoot;
        GameObject     vfx         = ObjectPool.Instance.GetObject(poolObjType);

        if (vfx != null)
        {
            vfx.transform.SetParent(transform);
            vfx.transform.position = bulletSpawnPoint.position;
            vfx.transform.rotation = transform.rotation;
        }
        if (animator != null)
        {
            animator.SetTrigger("Shoot");
        }
        BlasterBullet bullet = SpawnBullet();

        return(bullet);
    }
    // the Update loop contains a very simple example of moving the character around and controlling the animation
    void Update()
    {
        blasterCooldown -= Time.deltaTime;

        if (Input.GetButtonDown("Fire1") && blasterCooldown <= 0)
        {
            blasterCooldown = 0.15f;
            audioManager.blasterSFX.Play();
            SpawnManager.SpawnPrefab(Spawn.BlasterSparkFX, bulletSpawnPoint.position);
            BlasterBullet bullet = SpawnManager.SpawnPrefab(Spawn.Blaster, bulletSpawnPoint.position).GetComponent <BlasterBullet>();
            bullet.LaunchBullet(player.direction);
        }

        SoundEffects();

        // grab our current _velocity to use as a base for all calculations
        _velocity = _controller.velocity;

        if (_controller.isGrounded)
        {
            _velocity.y = 0;
            jumpCount   = 0;
        }

        if (Input.GetAxisRaw("Horizontal") == 1)
        {
            player.direction          = 1;
            normalizedHorizontalSpeed = 1;
            if (transform.localScale.x < 0f)
            {
                transform.localScale = new Vector3(-transform.localScale.x, transform.localScale.y, transform.localScale.z);
            }

            if (_controller.isGrounded)
            {
                player.spriteAnimator.Play("SamusWalk");
                playerState = PlayerState.Walk;
            }
        }
        else if (Input.GetAxisRaw("Horizontal") == -1)
        {
            player.direction          = -1;
            normalizedHorizontalSpeed = -1;
            if (transform.localScale.x > 0f)
            {
                transform.localScale = new Vector3(-transform.localScale.x, transform.localScale.y, transform.localScale.z);
            }

            if (_controller.isGrounded)
            {
                player.spriteAnimator.Play("SamusWalk");
                playerState = PlayerState.Walk;
            }
        }
        else
        {
            normalizedHorizontalSpeed = 0;

            if (_controller.isGrounded)
            {
                player.spriteAnimator.Play("SamusIdle");
                playerState = PlayerState.Idle;
            }
        }

        // we can only jump whilst grounded
        if (CanJump() && Input.GetButtonDown("Jump"))
        {
            _velocity.y = Mathf.Sqrt(2f * jumpHeight * -gravity);
            player.spriteAnimator.Play("SamusJumpUp");
            jumpCount = 1;

            audioManager.jumpSFX.Play();

            playerState = PlayerState.Jump;
        }

        if (CanFlip() && Input.GetButtonDown("Jump"))
        {
            _velocity.y = Mathf.Sqrt(1.8f * jumpHeight * -gravity);
            player.spriteAnimator.Play("SamusFlipBlur");
            jumpCount = 2;

            playerState = PlayerState.DoubleJump;
        }

        if (!_controller.isGrounded && jumpCount < 2 && (playerState == PlayerState.Jump || playerState == PlayerState.Idle))
        {
            if (_velocity.y > 0)
            {
                if (player.spriteAnimator.CurrentClip != player.spriteAnimator.GetClipByName("SamusJumpUp"))
                {
                    player.spriteAnimator.Play("SamusJumpUp");
                }
            }
            else
            {
                if (player.spriteAnimator.CurrentClip != player.spriteAnimator.GetClipByName("SamusJumpDown"))
                {
                    player.spriteAnimator.Play("SamusJumpDown");
                }
            }
        }

        // apply horizontal speed smoothing it
        var smoothedMovementFactor = _controller.isGrounded ? groundDamping : inAirDamping;         // how fast do we change direction?

        _velocity.x = Mathf.Lerp(_velocity.x, normalizedHorizontalSpeed * runSpeed, Time.deltaTime * smoothedMovementFactor);

        if (playerState != PlayerState.Hang)
        {
            // apply gravity before moving
            _velocity.y += gravity * Time.deltaTime;
        }

        _controller.move(_velocity * Time.deltaTime);

        if (!tempGrounded && _controller.isGrounded)
        {
            audioManager.landSFX.Play();
        }
        else if (tempGrounded && !_controller.isGrounded)
        {
            if (playerState == PlayerState.Walk)
            {
                playerState = PlayerState.Jump;
            }
        }

        tempGrounded = _controller.isGrounded;

        HangTest();
    }