Files
JJBB/Assets/Project/Script/T4M/T4MLodObjSC.cs
2024-08-23 15:49:34 +08:00

110 lines
2.9 KiB
C#

//Update SC
using UnityEngine;
using System.Collections;
public class T4MLodObjSC : MonoBehaviour {
//[HideInInspector]
public Renderer LOD1;
//[HideInInspector]
public Renderer LOD2;
//[HideInInspector]
public Renderer LOD3;
//Lod 2.0
[HideInInspector]
public float Interval = 0.5f;
[HideInInspector]
public Transform PlayerCamera;
[HideInInspector]
public int Mode;
private Vector3 OldPlayerPos;
[HideInInspector]
public int ObjLodStatus;
[HideInInspector]
public float MaxViewDistance= 60.0f;
[HideInInspector]
public float LOD2Start = 20.0f;
[HideInInspector]
public float LOD3Start = 40.0f;
public void ActivateLODScrpt()
{
if (Mode != 2)
return;
if (PlayerCamera == null)
PlayerCamera = Camera.main.transform;
InvokeRepeating("AFLODScrpt", Random.Range(0,Interval), Interval);
}
public void ActivateLODLay()
{
if (Mode != 2)
return;
if (PlayerCamera == null)
PlayerCamera = Camera.main.transform;
InvokeRepeating("AFLODLay", Random.Range(0,Interval), Interval);
}
public void AFLODLay()
{
if (OldPlayerPos == PlayerCamera.position)
return;
OldPlayerPos = PlayerCamera.position;
float distanceFromCamera = Vector3.Distance(new Vector3(transform.position.x,PlayerCamera.position.y,transform.position.z), PlayerCamera.position);
int Lay2 = gameObject.layer;
if(distanceFromCamera <= PlayerCamera.GetComponent<Camera>().layerCullDistances[Lay2]+5){
if(distanceFromCamera < LOD2Start && ObjLodStatus != 1){
LOD3.enabled = LOD2.enabled = false;
LOD1.enabled = true;
ObjLodStatus=1;
}else if (distanceFromCamera >= LOD2Start && distanceFromCamera < LOD3Start && ObjLodStatus != 2){
LOD1.enabled = LOD3.enabled = false;
LOD2.enabled = true;
ObjLodStatus=2;
}else if (distanceFromCamera >= LOD3Start && ObjLodStatus != 3){
LOD1.enabled = LOD2.enabled = false;
LOD3.enabled = true;
ObjLodStatus=3;
}
}
}
public void AFLODScrpt()
{
if (OldPlayerPos == PlayerCamera.position)
return;
OldPlayerPos = PlayerCamera.position;
float distanceFromCamera = Vector3.Distance(new Vector3(transform.position.x,PlayerCamera.position.y,transform.position.z), PlayerCamera.position);
if(distanceFromCamera <= MaxViewDistance){
if(distanceFromCamera < LOD2Start && ObjLodStatus != 1){
LOD3.enabled = LOD2.enabled = false;
LOD1.enabled = true;
ObjLodStatus=1;
}else if (distanceFromCamera >= LOD2Start && distanceFromCamera < LOD3Start && ObjLodStatus != 2){
LOD1.enabled = LOD3.enabled = false;
LOD2.enabled = true;
ObjLodStatus=2;
}else if (distanceFromCamera >= LOD3Start && ObjLodStatus != 3){
LOD1.enabled = LOD2.enabled = false;
LOD3.enabled = true;
ObjLodStatus=3;
}
}else if(ObjLodStatus != 0){
LOD1.enabled = LOD2.enabled = LOD3.enabled = false;
ObjLodStatus=0;
}
}
}