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); }
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; }
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>()); } }
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(); }