add ckg
plantilla base para movimiento básico
This commit is contained in:
@@ -0,0 +1,280 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
public class vehicleInteractionPanelSystem : MonoBehaviour
|
||||
{
|
||||
[Header ("Main Settings")]
|
||||
[Space]
|
||||
|
||||
public bool vehicleInteractionEnabled = true;
|
||||
|
||||
public string enterVehicleAsDriverInputName = "Enter Vehicle As Driver";
|
||||
public string enterVehicleAsPassengerInputName = "Enter Vehicle As Passenger";
|
||||
|
||||
[Space]
|
||||
[Header ("Debug")]
|
||||
[Space]
|
||||
|
||||
public bool showDebugPrint;
|
||||
|
||||
public bool vehicleDetected;
|
||||
|
||||
public bool isVehicleFull;
|
||||
|
||||
public bool isVehicleBeingDriven;
|
||||
|
||||
public bool arePassengerSeatsFull;
|
||||
|
||||
public int numberOfVehicleSeats;
|
||||
|
||||
public GameObject currentDeviceDetected;
|
||||
public GameObject previousDeviceDetected;
|
||||
|
||||
public GameObject currentVehicleGameObject;
|
||||
|
||||
public IKDrivingSystem currentIKDrivingSystem;
|
||||
|
||||
public vehicleHUDManager currentVehicleHUDManager;
|
||||
|
||||
[Space]
|
||||
[Header ("Components")]
|
||||
[Space]
|
||||
|
||||
public playerController mainPlayerController;
|
||||
|
||||
public usingDevicesSystem mainUsingDevicesSystem;
|
||||
|
||||
public playerInputManager mainPlayerInputManager;
|
||||
|
||||
[Space]
|
||||
[Header ("UI Components")]
|
||||
[Space]
|
||||
|
||||
public List<GameObject> vehicleSeatsAvailableIconList = new List<GameObject> ();
|
||||
public GameObject vehicleDriverIconPanel;
|
||||
public GameObject vehiclePassengerIconPanel;
|
||||
public Text vehicleDriverText;
|
||||
public Text vehiclePassengerText;
|
||||
public GameObject vehicleFullPanel;
|
||||
|
||||
|
||||
Coroutine updateCoroutine;
|
||||
|
||||
|
||||
void Start ()
|
||||
{
|
||||
if (vehicleInteractionEnabled) {
|
||||
updateCoroutine = StartCoroutine (updateSystemCoroutine ());
|
||||
}
|
||||
}
|
||||
|
||||
public void stopUpdateCoroutine ()
|
||||
{
|
||||
if (updateCoroutine != null) {
|
||||
StopCoroutine (updateCoroutine);
|
||||
}
|
||||
}
|
||||
|
||||
IEnumerator updateSystemCoroutine ()
|
||||
{
|
||||
var waitTime = new WaitForFixedUpdate ();
|
||||
|
||||
while (true) {
|
||||
updateSystem ();
|
||||
|
||||
yield return waitTime;
|
||||
}
|
||||
}
|
||||
|
||||
void updateSystem ()
|
||||
{
|
||||
if (mainPlayerController.isPlayerDriving ()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (mainUsingDevicesSystem.anyDeviceDetected ()) {
|
||||
|
||||
currentDeviceDetected = mainUsingDevicesSystem.objectToUse;
|
||||
|
||||
if (currentDeviceDetected != previousDeviceDetected) {
|
||||
previousDeviceDetected = currentDeviceDetected;
|
||||
|
||||
setCurrentVehicleDetected (currentDeviceDetected);
|
||||
|
||||
}
|
||||
} else {
|
||||
if (vehicleDetected) {
|
||||
|
||||
setCurrentVehicleDetected (null);
|
||||
|
||||
currentDeviceDetected = null;
|
||||
|
||||
previousDeviceDetected = null;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void setCurrentVehicleDetected (GameObject newVehicle)
|
||||
{
|
||||
if (!vehicleInteractionEnabled) {
|
||||
return;
|
||||
}
|
||||
|
||||
currentVehicleGameObject = newVehicle;
|
||||
|
||||
vehicleDetected = false;
|
||||
|
||||
mainUsingDevicesSystem.setUseDeviceButtonEnabledState (true);
|
||||
|
||||
if (currentVehicleGameObject != null) {
|
||||
if (applyDamage.isVehicle (currentVehicleGameObject)) {
|
||||
vehicleDetected = true;
|
||||
|
||||
currentVehicleHUDManager = currentVehicleGameObject.GetComponent<vehicleHUDManager> ();
|
||||
|
||||
if (currentVehicleHUDManager == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
currentIKDrivingSystem = currentVehicleHUDManager.getIKDrivingSystem ();
|
||||
|
||||
numberOfVehicleSeats = currentIKDrivingSystem.getVehicleSeatsAmount ();
|
||||
|
||||
for (int i = 0; i < vehicleSeatsAvailableIconList.Count; i++) {
|
||||
if (i < (numberOfVehicleSeats - 1)) {
|
||||
vehicleSeatsAvailableIconList [i].SetActive (true);
|
||||
} else {
|
||||
vehicleSeatsAvailableIconList [i].SetActive (false);
|
||||
}
|
||||
}
|
||||
|
||||
isVehicleBeingDriven = currentIKDrivingSystem.isVehicleBeingDriven ();
|
||||
|
||||
arePassengerSeatsFull = currentIKDrivingSystem.arePassengerSeatsFull ();
|
||||
|
||||
if (vehiclePassengerIconPanel.activeSelf != !arePassengerSeatsFull) {
|
||||
vehiclePassengerIconPanel.SetActive (!arePassengerSeatsFull);
|
||||
}
|
||||
|
||||
if (vehicleDriverIconPanel.activeSelf != !isVehicleBeingDriven) {
|
||||
vehicleDriverIconPanel.SetActive (!isVehicleBeingDriven);
|
||||
}
|
||||
|
||||
if (!isVehicleBeingDriven) {
|
||||
string driverButtonKeyValue = mainPlayerInputManager.getButtonKey (enterVehicleAsDriverInputName);
|
||||
|
||||
if (driverButtonKeyValue != "") {
|
||||
vehicleDriverText.text = driverButtonKeyValue;
|
||||
}
|
||||
}
|
||||
|
||||
string passengerButtonKeyValue = mainPlayerInputManager.getButtonKey (enterVehicleAsPassengerInputName);
|
||||
|
||||
if (passengerButtonKeyValue != "") {
|
||||
vehiclePassengerText.text = passengerButtonKeyValue;
|
||||
}
|
||||
|
||||
isVehicleFull = currentIKDrivingSystem.isVehicleFull ();
|
||||
|
||||
if (vehicleFullPanel.activeSelf != !isVehicleFull) {
|
||||
vehicleFullPanel.SetActive (!isVehicleFull);
|
||||
}
|
||||
|
||||
mainUsingDevicesSystem.setUseDeviceButtonEnabledState (false);
|
||||
} else {
|
||||
|
||||
}
|
||||
} else {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public void inputEnterOnVehicleAsDriver ()
|
||||
{
|
||||
if (!vehicleInteractionEnabled) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (isVehicleFull) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (isVehicleBeingDriven) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (mainPlayerController.isPlayerDriving ()) {
|
||||
return;
|
||||
}
|
||||
|
||||
float lastTimeDriving = mainPlayerController.getLastTimeDriving ();
|
||||
|
||||
if (lastTimeDriving > -1) {
|
||||
if (Time.time < lastTimeDriving + 0.3f) {
|
||||
if (showDebugPrint) {
|
||||
print ("trying to enter again on vehicle after getting off in a short amount of time, cancelling");
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (vehicleDetected) {
|
||||
currentIKDrivingSystem.setDriverExternally (mainPlayerController.gameObject);
|
||||
|
||||
mainUsingDevicesSystem.setUseDeviceButtonEnabledState (true);
|
||||
|
||||
vehicleDetected = false;
|
||||
|
||||
currentDeviceDetected = null;
|
||||
previousDeviceDetected = null;
|
||||
}
|
||||
}
|
||||
|
||||
public void inputEnterOnVehicleAsPassenger ()
|
||||
{
|
||||
if (!vehicleInteractionEnabled) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (isVehicleFull) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (arePassengerSeatsFull) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (mainPlayerController.isPlayerDriving ()) {
|
||||
GameObject currentVehicle = mainPlayerController.getCurrentVehicle ();
|
||||
|
||||
if (currentVehicle != null) {
|
||||
mainUsingDevicesSystem.clearDeviceList ();
|
||||
|
||||
mainUsingDevicesSystem.addDeviceToList (currentVehicle);
|
||||
|
||||
mainUsingDevicesSystem.updateClosestDeviceList ();
|
||||
|
||||
mainUsingDevicesSystem.setCurrentVehicle (currentVehicle);
|
||||
|
||||
mainUsingDevicesSystem.useCurrentDevice (currentVehicle);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (vehicleDetected) {
|
||||
currentIKDrivingSystem.setPassengerExternally (mainPlayerController.gameObject);
|
||||
|
||||
mainUsingDevicesSystem.setUseDeviceButtonEnabledState (true);
|
||||
|
||||
vehicleDetected = false;
|
||||
|
||||
currentDeviceDetected = null;
|
||||
previousDeviceDetected = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user