Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- public class Player : MonoBehaviour
- {
- [SerializeField]
- private bool _isTripleShotActive = false;
- [SerializeField]
- private float _speed = 3.5f;
- [SerializeField]
- private GameObject _laserPrefab;
- [SerializeField]
- private GameObject _tripleLaserPrefab;
- [SerializeField]
- private float _firerate = .15f;
- private float _canFire = -1f;
- [SerializeField]
- private int _lives = 3;
- private SpawnManager _spawnManager;
- // Start is called before the first frame update
- void Start()
- {
- //make current position = (0,0,0)
- transform.position = new Vector3(0, 0, 0);
- _spawnManager = GameObject.Find("Spawn_Manager").GetComponent<SpawnManager>();
- if (_spawnManager == null)
- {
- Debug.LogError("Spawn Manager is NULL");
- }
- }
- // Update is called once per frame
- void Update()
- {
- calculateMovement();
- if (Input.GetKeyDown(KeyCode.Space) && Time.time > _canFire)
- {
- fireLaser();
- }
- }
- void calculateMovement()
- {
- //Base movement
- float horizontalInput = Input.GetAxis("Horizontal");
- float verticalInput = Input.GetAxis("Vertical");
- transform.Translate(new Vector3(horizontalInput, verticalInput, 0) * _speed * Time.deltaTime);
- // Block player from leaving game screen.
- if (transform.position.y >= 0) // y movement
- {
- transform.position = new Vector3(transform.position.x, 0, transform.position.z);
- }
- else if (transform.position.y <= -3.8f)
- {
- transform.position = new Vector3(transform.position.x, -3.8f, transform.position.z);
- }
- //Alternate solution for above, won't work for looping around
- // transform.position = new Vector3(transform.position.x,Mathf.Clamp(transform.position.y,-3.8f, 0),0);
- if (transform.position.x < -11.3f) // x movement
- {
- transform.position = new Vector3(11.3f, transform.position.y, transform.position.z);
- }
- else if (transform.position.x > 11.3f)
- {
- transform.position = new Vector3(-11.3f, transform.position.y, transform.position.z);
- }
- }
- void fireLaser()
- {
- if (_isTripleShotActive==true)
- {
- Instantiate(_tripleLaserPrefab, transform.position, Quaternion.identity);
- }
- else
- {
- Instantiate(_laserPrefab, transform.position + new Vector3(0, 1.05f, 0), Quaternion.identity);
- }
- _canFire = Time.time + _firerate;
- }
- public void Damage()
- {
- _lives--;
- if (_lives <=0)
- {
- _spawnManager.OnPlayerDeath();
- Destroy(this.gameObject);
- }
- }
- public void TripleShotActive()
- {
- _isTripleShotActive = true;
- Debug.Log("Powerup request received");
- StartCoroutine(TripleShotPowerDownRoutine());
- }
- IEnumerator TripleShotPowerDownRoutine()
- {
- yield return new WaitForSeconds(5.0f);
- _isTripleShotActive = false;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement