Очки за дрифт

This commit is contained in:
Max_Divizion 2024-06-26 17:53:42 +03:00
parent dca0c8d0c1
commit 50ec58d9a8
11 changed files with 4433 additions and 0 deletions

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 9719638f26e556f4fbe1f0c12718f710
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 4991592a1585c3846afa91f8858d0d12
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

8
Assets/Scripts/UI.meta Normal file
View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: ed3d101d8fa2b3941a4531458ec57175
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,119 @@
using System.Collections;
using System.Collections.Generic;
using System.Threading.Tasks;
using TMPro;
using UnityEngine;
public class DriftScore : MonoBehaviour
{
[SerializeField] private Rigidbody playerRB;
[SerializeField] private TMP_Text totalScoreText;
[SerializeField] private TMP_Text currentScoreText;
[SerializeField] private TMP_Text factorText;
[SerializeField] private TMP_Text driftAngleText;
private float speed = 0;
private float driftAngle = 0;
private float driftFactor = 1;
private float currentScore;
private float totalScore;
private bool isDrifting = false;
[SerializeField] private float minimumSpeed = 5;
[SerializeField] private float minimumAngle = 10;
[SerializeField] private float driftingDelay = 0.2f;
[SerializeField] private GameObject driftingObject;
[SerializeField] private Color normalDriftColor;
[SerializeField] private Color nearStopColor;
[SerializeField] private Color driftEndedColor;
private IEnumerator stopDriftingCoroutine = null;
private void Start()
{
driftingObject.SetActive(false);
}
private void Update()
{
ManagerDrift();
ManageUI();
}
void ManagerDrift()
{
speed = playerRB.velocity.magnitude;
driftAngle = Vector3.Angle(playerRB.transform.forward, (playerRB.velocity + playerRB.transform.forward).normalized);
if (driftAngle > 120)
{
driftAngle = 0;
}
if (driftAngle >= minimumAngle && speed > minimumSpeed)
{
if (!isDrifting || stopDriftingCoroutine != null)
{
StartDrift();
}
}
else
{
if (isDrifting && stopDriftingCoroutine == null)
{
StopDrift();
}
}
if (isDrifting)
{
currentScore += Time.deltaTime * driftAngle * driftFactor;
driftFactor += Time.deltaTime;
driftingObject.SetActive(true);
}
}
async void StartDrift()
{
if (!isDrifting)
{
await Task.Delay(Mathf.RoundToInt(1000 * driftingDelay));
driftFactor = 1;
}
if (stopDriftingCoroutine != null)
{
StopCoroutine(stopDriftingCoroutine);
stopDriftingCoroutine = null;
}
currentScoreText.color = normalDriftColor;
isDrifting = true;
}
void StopDrift()
{
stopDriftingCoroutine = StoppingDrift();
StartCoroutine(stopDriftingCoroutine);
}
private IEnumerator StoppingDrift()
{
yield return new WaitForSeconds(0.1f);
currentScoreText.color = Color.yellow;
yield return new WaitForSeconds(driftingDelay * 4f);
totalScore += currentScore;
isDrifting = false;
currentScoreText.color = Color.red;
yield return new WaitForSeconds(0.5f);
currentScore = 0;
driftingObject.SetActive(false);
}
void ManageUI()
{
totalScoreText.text = "Ðåêîðä: " + (totalScore).ToString("###,###,000");
factorText.text = driftFactor.ToString("###,###,##0.0") + "X";
currentScoreText.text = currentScore.ToString("###,###,000");
driftAngleText.text = driftAngle.ToString("###,##0");
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: bb93655aa55fc7644b1844ee83011ba7
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: