add ckg
plantilla base para movimiento básico
This commit is contained in:
@@ -0,0 +1,168 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Events;
|
||||
|
||||
public class enableOrDisableObjectOnDistanceManager : MonoBehaviour
|
||||
{
|
||||
[Header ("Behavior Main Settings")]
|
||||
[Space]
|
||||
|
||||
public bool addObjectToMainSystem = true;
|
||||
|
||||
public bool addObjectOnStartWithDelay;
|
||||
|
||||
public float delayToAddObjectOnStart = 0.01f;
|
||||
|
||||
public bool addObjectOnAwake;
|
||||
|
||||
public Transform mainTransform;
|
||||
|
||||
public string mainManagerName = "Disable Objects On Distance Manager";
|
||||
|
||||
public bool setActiveStateOnMainTransformEnabled = true;
|
||||
|
||||
[Space]
|
||||
[Header ("Distance Settings")]
|
||||
[Space]
|
||||
|
||||
public bool useCustomDistance;
|
||||
|
||||
public float maxDistanceObjectEnabledOnScreen;
|
||||
public float maxDistanceObjectEnableOutOfScreen;
|
||||
|
||||
[Space]
|
||||
[Header ("Debug")]
|
||||
[Space]
|
||||
|
||||
public bool objectActive = true;
|
||||
|
||||
public bool objectInfoSentToMainSystem;
|
||||
|
||||
public bool mainEnableOrDisableObjectsOnDistanceSystemLocated;
|
||||
|
||||
public enableOrDisableObjectsOnDistanceSystem mainEnableOrDisableObjectsOnDistanceSystem;
|
||||
|
||||
[Space]
|
||||
[Header ("Events Settings")]
|
||||
[Space]
|
||||
|
||||
public UnityEvent eventOnEnableObject;
|
||||
public UnityEvent eventOnDisableObject;
|
||||
|
||||
|
||||
void Awake ()
|
||||
{
|
||||
if (addObjectToMainSystem) {
|
||||
if (addObjectOnAwake) {
|
||||
addObjectToSystem ();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Start ()
|
||||
{
|
||||
if (addObjectToMainSystem) {
|
||||
if (addObjectOnAwake) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (addObjectOnStartWithDelay) {
|
||||
StartCoroutine (addObjectToSystemCoroutine ());
|
||||
} else {
|
||||
addObjectToSystem ();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
IEnumerator addObjectToSystemCoroutine ()
|
||||
{
|
||||
WaitForSeconds delay = new WaitForSeconds (delayToAddObjectOnStart);
|
||||
|
||||
yield return delay;
|
||||
|
||||
addObjectToSystem ();
|
||||
}
|
||||
|
||||
void addObjectToSystem ()
|
||||
{
|
||||
if (objectInfoSentToMainSystem) {
|
||||
return;
|
||||
}
|
||||
|
||||
mainEnableOrDisableObjectsOnDistanceSystemLocated = mainEnableOrDisableObjectsOnDistanceSystem != null;
|
||||
|
||||
if (!mainEnableOrDisableObjectsOnDistanceSystemLocated) {
|
||||
mainEnableOrDisableObjectsOnDistanceSystem = enableOrDisableObjectsOnDistanceSystem.Instance;
|
||||
|
||||
mainEnableOrDisableObjectsOnDistanceSystemLocated = mainEnableOrDisableObjectsOnDistanceSystem != null;
|
||||
}
|
||||
|
||||
if (!mainEnableOrDisableObjectsOnDistanceSystemLocated) {
|
||||
GKC_Utils.instantiateMainManagerOnSceneWithTypeOnApplicationPlaying (enableOrDisableObjectsOnDistanceSystem.getMainManagerName (), typeof(enableOrDisableObjectsOnDistanceSystem), true);
|
||||
|
||||
mainEnableOrDisableObjectsOnDistanceSystem = enableOrDisableObjectsOnDistanceSystem.Instance;
|
||||
|
||||
mainEnableOrDisableObjectsOnDistanceSystemLocated = (mainEnableOrDisableObjectsOnDistanceSystem != null);
|
||||
}
|
||||
|
||||
if (!mainEnableOrDisableObjectsOnDistanceSystemLocated) {
|
||||
mainEnableOrDisableObjectsOnDistanceSystem = FindObjectOfType<enableOrDisableObjectsOnDistanceSystem> ();
|
||||
|
||||
mainEnableOrDisableObjectsOnDistanceSystemLocated = mainEnableOrDisableObjectsOnDistanceSystem != null;
|
||||
}
|
||||
|
||||
if (mainEnableOrDisableObjectsOnDistanceSystemLocated) {
|
||||
if (mainTransform == null) {
|
||||
mainTransform = transform;
|
||||
}
|
||||
|
||||
mainEnableOrDisableObjectsOnDistanceSystem.addObject (this);
|
||||
|
||||
objectInfoSentToMainSystem = true;
|
||||
}
|
||||
}
|
||||
|
||||
public void removeObjectFromSystem ()
|
||||
{
|
||||
if (mainEnableOrDisableObjectsOnDistanceSystemLocated) {
|
||||
mainEnableOrDisableObjectsOnDistanceSystem.removeObject (mainTransform);
|
||||
}
|
||||
}
|
||||
|
||||
public void setActiveState (bool state)
|
||||
{
|
||||
if (objectActive == state) {
|
||||
return;
|
||||
}
|
||||
|
||||
objectActive = state;
|
||||
|
||||
if (objectActive) {
|
||||
eventOnEnableObject.Invoke ();
|
||||
} else {
|
||||
eventOnDisableObject.Invoke ();
|
||||
}
|
||||
}
|
||||
|
||||
public void setAddObjectToMainSystemState (bool state)
|
||||
{
|
||||
addObjectToMainSystem = state;
|
||||
|
||||
if (!Application.isPlaying) {
|
||||
if (addObjectToMainSystem) {
|
||||
addObjectToSystem ();
|
||||
} else {
|
||||
removeObjectFromSystem ();
|
||||
|
||||
setActiveState (false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public bool isSetActiveStateOnMainTransformEnabled ()
|
||||
{
|
||||
return setActiveStateOnMainTransformEnabled;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user