83 lines
2.5 KiB
C#
83 lines
2.5 KiB
C#
using System;
|
|
using UnityEngine.UI;
|
|
using TMPro;
|
|
using UnityEngine;
|
|
using UnityEngine.InputSystem;
|
|
public class BallController : MonoBehaviour {
|
|
|
|
[SerializeField] private TMP_Text _pickupLeftText;
|
|
[SerializeField] private TMP_Text _timeSpentText;
|
|
[SerializeField] private TMP_Text _winText;
|
|
[SerializeField] Button _playAgain;
|
|
[SerializeField] Button _quit;
|
|
int _pickupLeft;
|
|
float _ballSpeed;
|
|
float _brakeForce;
|
|
float _jumpForce;
|
|
Rigidbody _ball;
|
|
float outOfBounds = -1.8f;
|
|
|
|
void Start() {
|
|
_ball = GetComponent<Rigidbody>();
|
|
_ballSpeed = 3f;
|
|
_brakeForce = 0.3f;
|
|
_jumpForce = 14f;
|
|
_pickupLeft = GameObject.FindGameObjectsWithTag("PickUp").Length;
|
|
transform.position = new Vector3(0, 0.5f, 0);
|
|
}
|
|
|
|
void Update() {
|
|
KeyHandler();
|
|
CheckPlayerOut();
|
|
UpdateGUI();
|
|
}
|
|
|
|
void UpdateGUI() {
|
|
_pickupLeftText.text = "Left: " + _pickupLeft.ToString();
|
|
_timeSpentText.text = "Tid: " + Time.timeSinceLevelLoad.ToString("F1") + "s";
|
|
}
|
|
|
|
void OnTriggerEnter(Collider other) {
|
|
other.gameObject.SetActive(false);
|
|
_pickupLeft--;
|
|
if (_pickupLeft == 0)
|
|
LevelDone();
|
|
}
|
|
|
|
void LevelDone() {
|
|
_pickupLeftText.gameObject.SetActive(false);
|
|
_timeSpentText.gameObject.SetActive(false);
|
|
_winText.text = "Snyggt jobbat!\nDin tid: " + Time.timeSinceLevelLoad.ToString("F1") + "s";
|
|
_winText.gameObject.SetActive(true);
|
|
_playAgain.gameObject.SetActive(true);
|
|
_quit.gameObject.SetActive(true);
|
|
}
|
|
|
|
void CheckPlayerOut() {
|
|
if (transform.position.y < outOfBounds) {
|
|
transform.position = new Vector3(0, 1f, 0);
|
|
transform.rotation = Quaternion.Euler(0, 0, 0);
|
|
}
|
|
}
|
|
|
|
void KeyHandler() {
|
|
if (Keyboard.current.wKey.isPressed) {
|
|
_ball.AddForce(Vector3.forward * _ballSpeed);
|
|
}
|
|
else if (Keyboard.current.sKey.isPressed) {
|
|
_ball.AddForce(Vector3.back * _ballSpeed);
|
|
}
|
|
else if (Keyboard.current.dKey.isPressed) {
|
|
_ball.AddForce(Vector3.right * _ballSpeed);
|
|
}
|
|
else if (Keyboard.current.aKey.isPressed) {
|
|
_ball.AddForce(Vector3.left * _ballSpeed);
|
|
}
|
|
if (Keyboard.current.spaceKey.isPressed && transform.position.y < 1) {
|
|
_ball.AddForce(Vector3.up * _jumpForce);
|
|
}
|
|
else {
|
|
_ball.AddForce(-_ball.linearVelocity * _brakeForce);
|
|
}
|
|
}
|
|
} |