新相机控制逻辑脚本
This commit is contained in:
parent
c859428031
commit
4e8cb1535c
|
@ -14,6 +14,7 @@ MonoBehaviour:
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
useSafeMode: 1
|
useSafeMode: 1
|
||||||
safeModeOptions:
|
safeModeOptions:
|
||||||
|
logBehaviour: 2
|
||||||
nestedTweenFailureBehaviour: 0
|
nestedTweenFailureBehaviour: 0
|
||||||
timeScale: 1
|
timeScale: 1
|
||||||
useSmoothDeltaTime: 0
|
useSmoothDeltaTime: 0
|
||||||
|
@ -31,6 +32,8 @@ MonoBehaviour:
|
||||||
defaultEasePeriod: 0
|
defaultEasePeriod: 0
|
||||||
defaultAutoKill: 1
|
defaultAutoKill: 1
|
||||||
defaultLoopType: 0
|
defaultLoopType: 0
|
||||||
|
debugMode: 0
|
||||||
|
debugStoreTargetId: 1
|
||||||
showPreviewPanel: 1
|
showPreviewPanel: 1
|
||||||
storeSettingsLocation: 0
|
storeSettingsLocation: 0
|
||||||
modules:
|
modules:
|
||||||
|
@ -42,5 +45,9 @@ MonoBehaviour:
|
||||||
uiEnabled: 1
|
uiEnabled: 1
|
||||||
textMeshProEnabled: 0
|
textMeshProEnabled: 0
|
||||||
tk2DEnabled: 0
|
tk2DEnabled: 0
|
||||||
|
deAudioEnabled: 0
|
||||||
|
deUnityExtendedEnabled: 0
|
||||||
|
epoOutlineEnabled: 0
|
||||||
|
createASMDEF: 0
|
||||||
showPlayingTweens: 0
|
showPlayingTweens: 0
|
||||||
showPausedTweens: 0
|
showPausedTweens: 0
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,7 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 0184bb96ccf7b4948b004e3adcad11f3
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -5,6 +5,9 @@ using UnityEditor;
|
||||||
#endif
|
#endif
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using UnityEngine.EventSystems;
|
using UnityEngine.EventSystems;
|
||||||
|
using DG.Tweening;
|
||||||
|
using System;
|
||||||
|
using static WebInteraction;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 相机控制
|
/// 相机控制
|
||||||
|
@ -65,6 +68,23 @@ public class CameraRT : MonoBehaviour
|
||||||
//动态调节相机缩放的灵敏度
|
//动态调节相机缩放的灵敏度
|
||||||
float tempSpeed;
|
float tempSpeed;
|
||||||
|
|
||||||
|
private void Awake()
|
||||||
|
{
|
||||||
|
BoolMonitor.ValueChanged += BoolMonitor_ValueChanged;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void BoolMonitor_ValueChanged(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
//Debug.Log("当前是否不动" + BoolMonitor.Value);
|
||||||
|
if (!BoolMonitor.Value)
|
||||||
|
{
|
||||||
|
if (!string.IsNullOrEmpty(WebInteraction.Inst.current_videoNumber) && WebInteraction.Inst.isVideoPlay)
|
||||||
|
{
|
||||||
|
WebInteraction.Inst.CloseVideo(WebInteraction.Inst.current_videoNumber);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void Start()
|
private void Start()
|
||||||
{
|
{
|
||||||
if (cam == null)
|
if (cam == null)
|
||||||
|
@ -72,16 +92,110 @@ public class CameraRT : MonoBehaviour
|
||||||
cam = Camera.main;
|
cam = Camera.main;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cameraTransform = cam.transform;
|
||||||
|
|
||||||
|
// 初始化上一帧的位置和旋转
|
||||||
|
lastPosition = cameraTransform.position;
|
||||||
|
lastRotation = cameraTransform.rotation;
|
||||||
|
|
||||||
target = transform.GetChild(0);
|
target = transform.GetChild(0);
|
||||||
target.gameObject.AddComponent<CameraTargetFollowCam>();
|
target.gameObject.AddComponent<CameraTargetFollowCam>();
|
||||||
|
|
||||||
x = cam.transform.localEulerAngles.y;
|
target_init_position = target.position;
|
||||||
y = cam.transform.localEulerAngles.x;
|
//target_init_rotation = target.rotation;
|
||||||
|
target_init_eulerAngles = target.eulerAngles;
|
||||||
|
|
||||||
|
camera_init_position = cam.transform.position;
|
||||||
|
//camera_init_rotation = cam.transform.rotation;
|
||||||
|
camera_init_eulerAngles = cam.transform.eulerAngles;
|
||||||
|
|
||||||
|
init_x = x = cam.transform.localEulerAngles.y;
|
||||||
|
init_y = y = cam.transform.localEulerAngles.x;
|
||||||
|
|
||||||
tempSpeed = xSpeed_move;
|
tempSpeed = xSpeed_move;
|
||||||
rotateTimer_temp = rotateTimer;
|
rotateTimer_temp = rotateTimer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Vector3 target_init_position;
|
||||||
|
//Quaternion target_init_rotation;
|
||||||
|
Vector3 target_init_eulerAngles;
|
||||||
|
Vector3 camera_init_position;
|
||||||
|
//Quaternion camera_init_rotation;
|
||||||
|
Vector3 camera_init_eulerAngles;
|
||||||
|
float init_x;
|
||||||
|
float init_y;
|
||||||
|
bool auto_move;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 全景视角
|
||||||
|
/// </summary>
|
||||||
|
public void InitPanoramic()
|
||||||
|
{
|
||||||
|
auto_move = true;
|
||||||
|
//target.position = target_init_position;
|
||||||
|
//target.rotation = target_init_rotation;
|
||||||
|
|
||||||
|
//cam.transform.position = camera_init_position;
|
||||||
|
//cam.transform.rotation = camera_init_rotation;
|
||||||
|
|
||||||
|
//x = cam.transform.localEulerAngles.y;
|
||||||
|
//y = cam.transform.localEulerAngles.x;
|
||||||
|
|
||||||
|
Array.ForEach(GameObject.FindObjectsOfType<ClickEvent>(), itme =>
|
||||||
|
{
|
||||||
|
itme.My_magnifyState = false;
|
||||||
|
});
|
||||||
|
//Array.ForEach(GameObject.FindObjectsOfType<TransparentGlow>(), itme =>
|
||||||
|
//{
|
||||||
|
// itme.F2();
|
||||||
|
//});
|
||||||
|
PatternChoose.Inst.transform.Find("设备类/设备配置").gameObject.SetActive(false);
|
||||||
|
PatternChoose.Inst.transform.Find("设备类/设备新增").gameObject.SetActive(false);
|
||||||
|
PatternChoose.Inst.transform.Find("端口类/端口配置").gameObject.SetActive(false);
|
||||||
|
PatternChoose.Inst.transform.Find("端口类/端口新增").gameObject.SetActive(false);
|
||||||
|
GameManager.Inst.magnifyState = false;
|
||||||
|
|
||||||
|
distance = 20;
|
||||||
|
|
||||||
|
DOTween.To(() => x, (v) => x = v, init_x, 0.5f);
|
||||||
|
DOTween.To(() => y, (v) => y = v, init_y, 0.5f);
|
||||||
|
|
||||||
|
DOTween.To(() => cam.transform.position, (v) => cam.transform.position = v, camera_init_position, 0.5f);
|
||||||
|
DOTween.To(() => cam.transform.eulerAngles, v => cam.transform.eulerAngles = v, camera_init_eulerAngles, 0.5f);
|
||||||
|
|
||||||
|
DOTween.To(() => target.position, v => target.position = v, target_init_position, 0.5f);
|
||||||
|
DOTween.To(() => target.eulerAngles, v => target.eulerAngles = v, target_init_eulerAngles, 0.5f).OnComplete(() => { auto_move = false; });
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 鸟瞰视角
|
||||||
|
/// </summary>
|
||||||
|
public void InitBirds_Eye()
|
||||||
|
{
|
||||||
|
auto_move = true;
|
||||||
|
|
||||||
|
Array.ForEach(GameObject.FindObjectsOfType<ClickEvent>(), itme =>
|
||||||
|
{
|
||||||
|
itme.My_magnifyState = false;
|
||||||
|
});
|
||||||
|
PatternChoose.Inst.transform.Find("设备类/设备配置").gameObject.SetActive(false);
|
||||||
|
PatternChoose.Inst.transform.Find("设备类/设备新增").gameObject.SetActive(false);
|
||||||
|
PatternChoose.Inst.transform.Find("端口类/端口配置").gameObject.SetActive(false);
|
||||||
|
PatternChoose.Inst.transform.Find("端口类/端口新增").gameObject.SetActive(false);
|
||||||
|
GameManager.Inst.magnifyState = true;
|
||||||
|
|
||||||
|
distance = 10;
|
||||||
|
|
||||||
|
DOTween.To(() => x, (v) => x = v, 110, 0.5f);
|
||||||
|
DOTween.To(() => y, (v) => y = v, 15, 0.5f);
|
||||||
|
|
||||||
|
DOTween.To(() => cam.transform.position, (v) => cam.transform.position = v, new Vector3(1, 2.8f, -7.5f), 0.5f);
|
||||||
|
DOTween.To(() => cam.transform.eulerAngles, v => cam.transform.eulerAngles = v, new Vector3(15, 110, 0), 0.5f);
|
||||||
|
|
||||||
|
DOTween.To(() => target.position, v => target.position = v, new Vector3(10.2f, 0.2f, -11), 0.5f);
|
||||||
|
DOTween.To(() => target.eulerAngles, v => target.eulerAngles = v, new Vector3(0, 110, 0), 0.5f).OnComplete(() => { auto_move = false; });
|
||||||
|
}
|
||||||
|
|
||||||
public void SetTarget(Transform _target)
|
public void SetTarget(Transform _target)
|
||||||
{
|
{
|
||||||
target.position = _target.position;
|
target.position = _target.position;
|
||||||
|
@ -113,6 +227,10 @@ public class CameraRT : MonoBehaviour
|
||||||
Vector3 oldMousePos;
|
Vector3 oldMousePos;
|
||||||
void Update()
|
void Update()
|
||||||
{
|
{
|
||||||
|
BoolMonitor.Value = ismove();
|
||||||
|
|
||||||
|
if (auto_move)
|
||||||
|
return;
|
||||||
if (!autoRotate)
|
if (!autoRotate)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -146,6 +264,8 @@ public class CameraRT : MonoBehaviour
|
||||||
|
|
||||||
void LateUpdate()
|
void LateUpdate()
|
||||||
{
|
{
|
||||||
|
if (auto_move)
|
||||||
|
return;
|
||||||
if (isAutoRotating)
|
if (isAutoRotating)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -173,12 +293,32 @@ public class CameraRT : MonoBehaviour
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Transform cameraTransform;
|
||||||
|
private Vector3 lastPosition;
|
||||||
|
private Quaternion lastRotation;
|
||||||
|
//检测相机是否移动
|
||||||
|
public bool ismove()
|
||||||
|
{
|
||||||
|
// 检查当前帧的位置和旋转是否与上一帧不同
|
||||||
|
if (cameraTransform.position != lastPosition || cameraTransform.rotation != lastRotation)
|
||||||
|
{
|
||||||
|
// 相机移动了,可以在这里执行相应的操作
|
||||||
|
//Debug.Log("相机移动了"+ BoolMonitor.Value);
|
||||||
|
|
||||||
|
// 更新上一帧的位置和旋转
|
||||||
|
lastPosition = cameraTransform.position;
|
||||||
|
lastRotation = cameraTransform.rotation;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
void Move()
|
void Move()
|
||||||
{
|
{
|
||||||
if (EventSystem.current.IsPointerOverGameObject())
|
if (EventSystem.current.IsPointerOverGameObject())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (Input.GetMouseButton(0))
|
if (Input.GetMouseButton(2))
|
||||||
{
|
{
|
||||||
float h = Input.GetAxis("Mouse X") * Time.deltaTime * xSpeed_move;
|
float h = Input.GetAxis("Mouse X") * Time.deltaTime * xSpeed_move;
|
||||||
float v = Input.GetAxis("Mouse Y") * Time.deltaTime * ySpeed_move;
|
float v = Input.GetAxis("Mouse Y") * Time.deltaTime * ySpeed_move;
|
||||||
|
|
|
@ -230,11 +230,26 @@ public class ExtendedFlycam : MonoBehaviour
|
||||||
rotationY = 0;
|
rotationY = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public CameraRT CameraRT;
|
||||||
|
|
||||||
|
public void CameraRtEnable()
|
||||||
|
{
|
||||||
|
CameraRT.enabled = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void CameraRtDisable()
|
||||||
|
{
|
||||||
|
CameraRT.enabled = false;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 镜头全景
|
/// 镜头全景
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void QuanJing()
|
public void QuanJing()
|
||||||
{
|
{
|
||||||
|
CameraRtEnable();
|
||||||
|
CameraRT.InitPanoramic();
|
||||||
|
return;
|
||||||
Array.ForEach(GameObject.FindObjectsOfType<ClickEvent>(), itme =>
|
Array.ForEach(GameObject.FindObjectsOfType<ClickEvent>(), itme =>
|
||||||
{
|
{
|
||||||
itme.My_magnifyState = false;
|
itme.My_magnifyState = false;
|
||||||
|
@ -263,6 +278,9 @@ public class ExtendedFlycam : MonoBehaviour
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void NiaoKan()
|
public void NiaoKan()
|
||||||
{
|
{
|
||||||
|
CameraRtEnable();
|
||||||
|
CameraRT.InitBirds_Eye();
|
||||||
|
return;
|
||||||
Array.ForEach(GameObject.FindObjectsOfType<ClickEvent>(), itme =>
|
Array.ForEach(GameObject.FindObjectsOfType<ClickEvent>(), itme =>
|
||||||
{
|
{
|
||||||
itme.My_magnifyState = false;
|
itme.My_magnifyState = false;
|
||||||
|
|
Loading…
Reference in New Issue