Files
FueraDeEscala/Assets/Game Kit Controller/Scripts/Others/setCharacterParentOnMovingObject.cs
Robii Aragon fd87a6ffd5 add ckg
plantilla base para movimiento básico
2026-02-05 05:07:55 -08:00

186 lines
5.9 KiB
C#

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class setCharacterParentOnMovingObject : MonoBehaviour
{
[Header ("Main Settings")]
[Space]
public string playerTag = "Player";
public string vehicleTag = "vehicle";
public Transform platformTransform;
[Space]
[Header ("Debug")]
[Space]
public List<waypointPlatform.passengersInfo> passengersInfoList = new List<waypointPlatform.passengersInfo> ();
public List<waypointPlatform.vehiclesInfo> vehiclesInfoList = new List<waypointPlatform.vehiclesInfo> ();
void OnTriggerEnter (Collider col)
{
checkTriggerState (col, true);
}
void OnTriggerExit (Collider col)
{
checkTriggerState (col, false);
}
void checkTriggerState (Collider col, bool isEnter)
{
if (isEnter) {
//if the player enters inside the platform trigger, then
if (platformTransform == null) {
platformTransform = transform;
}
if (col.gameObject.CompareTag (playerTag)) {
//store him
addPassenger (col.gameObject.transform);
//if he is not driving, then attach the player and the camera inside the platform
setPlayerParent (platformTransform, col.gameObject.transform);
} else if (col.gameObject.CompareTag (vehicleTag)) {
//store him
addVehicle (col.gameObject.transform);
//if he is not driving, then attach the player and the camera inside the platform
setVehicleParent (platformTransform, col.gameObject.transform);
}
} else {
//if the player exits, then disattach the player
if (col.gameObject.CompareTag (playerTag)) {
setPlayerParent (null, col.gameObject.transform);
removePassenger (col.gameObject.transform);
} else if (col.gameObject.CompareTag (vehicleTag)) {
setVehicleParent (null, col.gameObject.transform);
removeVehicle (col.gameObject.transform);
}
}
}
//attach and disattch the player and the camera inside the elevator
void setPlayerParent (Transform father, Transform newPassenger)
{
bool passengerFound = false;
waypointPlatform.passengersInfo newPassengersInfo = new waypointPlatform.passengersInfo ();
for (int i = 0; i < passengersInfoList.Count; i++) {
if (passengersInfoList [i].playerTransform == newPassenger && !passengerFound) {
newPassengersInfo = passengersInfoList [i];
passengerFound = true;
}
}
if (passengerFound) {
newPassengersInfo.playerControllerManager.setPlayerAndCameraAndFBAPivotTransformParent (father);
newPassengersInfo.playerControllerManager.setMovingOnPlatformActiveState (father != null);
}
}
void setAllPlayersParent (Transform father)
{
for (int i = 0; i < passengersInfoList.Count; i++) {
passengersInfoList [i].playerControllerManager.setPlayerAndCameraAndFBAPivotTransformParent (father);
passengersInfoList [i].playerControllerManager.setMovingOnPlatformActiveState (father != null);
}
}
public void addPassenger (Transform newPassenger)
{
bool passengerFound = false;
for (int i = 0; i < passengersInfoList.Count; i++) {
if (passengersInfoList [i].playerTransform == newPassenger && !passengerFound) {
passengerFound = true;
}
}
if (!passengerFound) {
waypointPlatform.passengersInfo newPassengersInfo = new waypointPlatform.passengersInfo ();
newPassengersInfo.playerTransform = newPassenger;
newPassengersInfo.playerControllerManager = newPassenger.GetComponent<playerController> ();
passengersInfoList.Add (newPassengersInfo);
}
}
void removePassenger (Transform newPassenger)
{
for (int i = 0; i < passengersInfoList.Count; i++) {
if (passengersInfoList [i].playerTransform == newPassenger) {
passengersInfoList.RemoveAt (i);
}
}
}
void setVehicleParent (Transform father, Transform newVehicle)
{
bool vehicleFound = false;
waypointPlatform.vehiclesInfo newVehiclesInfo = new waypointPlatform.vehiclesInfo ();
for (int i = 0; i < vehiclesInfoList.Count; i++) {
if (vehiclesInfoList [i].vehicleTransform == newVehicle && !vehicleFound) {
newVehiclesInfo = vehiclesInfoList [i];
vehicleFound = true;
}
}
if (vehicleFound) {
newVehiclesInfo.HUDManager.setVehicleAndCameraParent (father);
}
}
void setAllVehiclesParent (Transform father)
{
for (int i = 0; i < vehiclesInfoList.Count; i++) {
vehiclesInfoList [i].HUDManager.setVehicleAndCameraParent (father);
}
}
public void addVehicle (Transform newVehicle)
{
bool vehicleFound = false;
for (int i = 0; i < vehiclesInfoList.Count; i++) {
if (vehiclesInfoList [i].vehicleTransform == newVehicle && !vehicleFound) {
vehicleFound = true;
}
}
if (!vehicleFound) {
waypointPlatform.vehiclesInfo newVehiclesInfo = new waypointPlatform.vehiclesInfo ();
newVehiclesInfo.vehicleTransform = newVehicle;
newVehiclesInfo.HUDManager = newVehicle.GetComponent<vehicleHUDManager> ();
vehiclesInfoList.Add (newVehiclesInfo);
}
}
void removeVehicle (Transform newVehicle)
{
for (int i = 0; i < vehiclesInfoList.Count; i++) {
if (vehiclesInfoList [i].vehicleTransform == newVehicle) {
vehiclesInfoList.RemoveAt (i);
}
}
}
}