源战役客户端
25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

110 lines
2.9 KiB

//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;
}
}
}