Advertisement
Guest User

Player.cs

a guest
Oct 17th, 2019
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.23 KB | None | 0 0
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4.  
  5. public class Player : MonoBehaviour
  6. {
  7. [SerializeField]
  8. private bool _isTripleShotActive = false;
  9. [SerializeField]
  10. private float _speed = 3.5f;
  11. [SerializeField]
  12. private GameObject _laserPrefab;
  13. [SerializeField]
  14. private GameObject _tripleLaserPrefab;
  15. [SerializeField]
  16. private float _firerate = .15f;
  17. private float _canFire = -1f;
  18. [SerializeField]
  19. private int _lives = 3;
  20. private SpawnManager _spawnManager;
  21.  
  22.  
  23.  
  24.  
  25.  
  26. // Start is called before the first frame update
  27. void Start()
  28. {
  29. //make current position = (0,0,0)
  30. transform.position = new Vector3(0, 0, 0);
  31. _spawnManager = GameObject.Find("Spawn_Manager").GetComponent<SpawnManager>();
  32. if (_spawnManager == null)
  33. {
  34. Debug.LogError("Spawn Manager is NULL");
  35. }
  36. }
  37.  
  38. // Update is called once per frame
  39. void Update()
  40. {
  41. calculateMovement();
  42. if (Input.GetKeyDown(KeyCode.Space) && Time.time > _canFire)
  43. {
  44. fireLaser();
  45. }
  46.  
  47. }
  48. void calculateMovement()
  49. {
  50. //Base movement
  51. float horizontalInput = Input.GetAxis("Horizontal");
  52. float verticalInput = Input.GetAxis("Vertical");
  53. transform.Translate(new Vector3(horizontalInput, verticalInput, 0) * _speed * Time.deltaTime);
  54.  
  55. // Block player from leaving game screen.
  56. if (transform.position.y >= 0) // y movement
  57. {
  58. transform.position = new Vector3(transform.position.x, 0, transform.position.z);
  59. }
  60. else if (transform.position.y <= -3.8f)
  61. {
  62. transform.position = new Vector3(transform.position.x, -3.8f, transform.position.z);
  63. }
  64. //Alternate solution for above, won't work for looping around
  65. // transform.position = new Vector3(transform.position.x,Mathf.Clamp(transform.position.y,-3.8f, 0),0);
  66.  
  67.  
  68. if (transform.position.x < -11.3f) // x movement
  69. {
  70. transform.position = new Vector3(11.3f, transform.position.y, transform.position.z);
  71. }
  72. else if (transform.position.x > 11.3f)
  73. {
  74. transform.position = new Vector3(-11.3f, transform.position.y, transform.position.z);
  75. }
  76.  
  77. }
  78. void fireLaser()
  79. {
  80.  
  81. if (_isTripleShotActive==true)
  82. {
  83. Instantiate(_tripleLaserPrefab, transform.position, Quaternion.identity);
  84. }
  85. else
  86. {
  87. Instantiate(_laserPrefab, transform.position + new Vector3(0, 1.05f, 0), Quaternion.identity);
  88. }
  89. _canFire = Time.time + _firerate;
  90.  
  91. }
  92.  
  93. public void Damage()
  94. {
  95. _lives--;
  96. if (_lives <=0)
  97. {
  98. _spawnManager.OnPlayerDeath();
  99. Destroy(this.gameObject);
  100. }
  101. }
  102. public void TripleShotActive()
  103. {
  104. _isTripleShotActive = true;
  105. Debug.Log("Powerup request received");
  106. StartCoroutine(TripleShotPowerDownRoutine());
  107. }
  108. IEnumerator TripleShotPowerDownRoutine()
  109. {
  110. yield return new WaitForSeconds(5.0f);
  111. _isTripleShotActive = false;
  112. }
  113. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement