接入火山情绪模块深入
This commit is contained in:
@@ -68,7 +68,7 @@ MonoBehaviour:
|
||||
m_PreInfinity: 0
|
||||
m_PostInfinity: 0
|
||||
m_RotationOrder: 0
|
||||
- m_From: Eye DeepCamera
|
||||
- m_From: Emo Deep Camera
|
||||
m_To: '**ANY CAMERA**'
|
||||
m_Blend:
|
||||
m_Style: 0
|
||||
@@ -79,3 +79,14 @@ MonoBehaviour:
|
||||
m_PreInfinity: 0
|
||||
m_PostInfinity: 0
|
||||
m_RotationOrder: 0
|
||||
- m_From: '**ANY CAMERA**'
|
||||
m_To: Emo Deep Camera
|
||||
m_Blend:
|
||||
m_Style: 0
|
||||
m_Time: 2
|
||||
m_CustomCurve:
|
||||
serializedVersion: 2
|
||||
m_Curve: []
|
||||
m_PreInfinity: 0
|
||||
m_PostInfinity: 0
|
||||
m_RotationOrder: 0
|
||||
|
||||
@@ -19,27 +19,72 @@ MonoBehaviour:
|
||||
m_Key: line:0ef7bff
|
||||
m_Metadata:
|
||||
m_Items:
|
||||
- rid: 7848877248308838403
|
||||
- rid: 7848877270717431810
|
||||
- m_Id: 180190609408
|
||||
m_Key: line:088b598
|
||||
m_Metadata:
|
||||
m_Items:
|
||||
- rid: 7848877248308838404
|
||||
- rid: 7848877270717431811
|
||||
- m_Id: 180190609409
|
||||
m_Key: line:0dac12c
|
||||
m_Metadata:
|
||||
m_Items:
|
||||
- rid: 7848877248308838405
|
||||
- rid: 7848877270717431812
|
||||
- m_Id: 180190609410
|
||||
m_Key: line:0ad2190
|
||||
m_Metadata:
|
||||
m_Items:
|
||||
- rid: 7848877248308838406
|
||||
- rid: 7848877270717431813
|
||||
- m_Id: 180194803712
|
||||
m_Key: line:0466fea
|
||||
m_Metadata:
|
||||
m_Items:
|
||||
- rid: 7848877248308838407
|
||||
- rid: 7848877270717431814
|
||||
- m_Id: 385815380393984
|
||||
m_Key: line:3adc1a6b
|
||||
m_Metadata:
|
||||
m_Items:
|
||||
- rid: 7848877270717431815
|
||||
- m_Id: 385815418142720
|
||||
m_Key: line:88de144d
|
||||
m_Metadata:
|
||||
m_Items:
|
||||
- rid: 7848877270717431816
|
||||
- m_Id: 385815418142721
|
||||
m_Key: line:6e39d94c
|
||||
m_Metadata:
|
||||
m_Items:
|
||||
- rid: 7848877270717431817
|
||||
- m_Id: 385815422337024
|
||||
m_Key: line:10a52b00
|
||||
m_Metadata:
|
||||
m_Items:
|
||||
- rid: 7848877270717431818
|
||||
- m_Id: 385815422337025
|
||||
m_Key: line:bbda6a4d
|
||||
m_Metadata:
|
||||
m_Items:
|
||||
- rid: 7848877270717431819
|
||||
- m_Id: 385815422337026
|
||||
m_Key: line:18803fd4
|
||||
m_Metadata:
|
||||
m_Items:
|
||||
- rid: 7848877270717431820
|
||||
- m_Id: 385815422337027
|
||||
m_Key: line:29e5d4fb
|
||||
m_Metadata:
|
||||
m_Items:
|
||||
- rid: 7848877270717431821
|
||||
- m_Id: 385815422337028
|
||||
m_Key: line:819f5fc5
|
||||
m_Metadata:
|
||||
m_Items:
|
||||
- rid: 7848877270717431822
|
||||
- m_Id: 385815422337029
|
||||
m_Key: line:c51438fd
|
||||
m_Metadata:
|
||||
m_Items:
|
||||
- rid: 7848877270717431823
|
||||
m_Metadata:
|
||||
m_Items: []
|
||||
m_KeyGenerator:
|
||||
@@ -51,28 +96,73 @@ MonoBehaviour:
|
||||
type: {class: DistributedUIDGenerator, ns: UnityEngine.Localization.Tables, asm: Unity.Localization}
|
||||
data:
|
||||
m_CustomEpoch: 1747115029650
|
||||
- rid: 7848877248308838403
|
||||
- rid: 7848877270717431810
|
||||
type: {class: LineMetadata, ns: Yarn.Unity.UnityLocalization, asm: YarnSpinner.Unity}
|
||||
data:
|
||||
nodeName: Start
|
||||
tags: []
|
||||
- rid: 7848877248308838404
|
||||
- rid: 7848877270717431811
|
||||
type: {class: LineMetadata, ns: Yarn.Unity.UnityLocalization, asm: YarnSpinner.Unity}
|
||||
data:
|
||||
nodeName: Center
|
||||
tags: []
|
||||
- rid: 7848877248308838405
|
||||
- rid: 7848877270717431812
|
||||
type: {class: LineMetadata, ns: Yarn.Unity.UnityLocalization, asm: YarnSpinner.Unity}
|
||||
data:
|
||||
nodeName: "UserA_\u5708\u5C42\u8C61\u5F81\u8005"
|
||||
tags: []
|
||||
- rid: 7848877248308838406
|
||||
- rid: 7848877270717431813
|
||||
type: {class: LineMetadata, ns: Yarn.Unity.UnityLocalization, asm: YarnSpinner.Unity}
|
||||
data:
|
||||
nodeName: "UserA_\u5708\u5C42\u8C61\u5F81\u8005"
|
||||
tags: []
|
||||
- rid: 7848877248308838407
|
||||
- rid: 7848877270717431814
|
||||
type: {class: LineMetadata, ns: Yarn.Unity.UnityLocalization, asm: YarnSpinner.Unity}
|
||||
data:
|
||||
nodeName: "UserA_\u5708\u5C42\u8C61\u5F81\u8005"
|
||||
tags: []
|
||||
- rid: 7848877270717431815
|
||||
type: {class: LineMetadata, ns: Yarn.Unity.UnityLocalization, asm: YarnSpinner.Unity}
|
||||
data:
|
||||
nodeName: Start
|
||||
tags: []
|
||||
- rid: 7848877270717431816
|
||||
type: {class: LineMetadata, ns: Yarn.Unity.UnityLocalization, asm: YarnSpinner.Unity}
|
||||
data:
|
||||
nodeName: "\u60C5\u7EEA\u63A2\u7D22\u5B8C\u6210"
|
||||
tags: []
|
||||
- rid: 7848877270717431817
|
||||
type: {class: LineMetadata, ns: Yarn.Unity.UnityLocalization, asm: YarnSpinner.Unity}
|
||||
data:
|
||||
nodeName: "\u81EA\u5351\u627E\u5230\u4E86"
|
||||
tags: []
|
||||
- rid: 7848877270717431818
|
||||
type: {class: LineMetadata, ns: Yarn.Unity.UnityLocalization, asm: YarnSpinner.Unity}
|
||||
data:
|
||||
nodeName: "\u7F9E\u803B\u627E\u5230\u4E86"
|
||||
tags: []
|
||||
- rid: 7848877270717431819
|
||||
type: {class: LineMetadata, ns: Yarn.Unity.UnityLocalization, asm: YarnSpinner.Unity}
|
||||
data:
|
||||
nodeName: "\u6050\u60E7\u627E\u5230\u4E86"
|
||||
tags: []
|
||||
- rid: 7848877270717431820
|
||||
type: {class: LineMetadata, ns: Yarn.Unity.UnityLocalization, asm: YarnSpinner.Unity}
|
||||
data:
|
||||
nodeName: "\u7ED3\u675F\u60C5\u7EEA\u6A21\u5757\u63A2\u7D22"
|
||||
tags: []
|
||||
- rid: 7848877270717431821
|
||||
type: {class: LineMetadata, ns: Yarn.Unity.UnityLocalization, asm: YarnSpinner.Unity}
|
||||
data:
|
||||
nodeName: "\u627E\u5230\u7F9E\u803B\u5BF9\u8BDD"
|
||||
tags: []
|
||||
- rid: 7848877270717431822
|
||||
type: {class: LineMetadata, ns: Yarn.Unity.UnityLocalization, asm: YarnSpinner.Unity}
|
||||
data:
|
||||
nodeName: "\u627E\u5230\u6050\u60E7\u5BF9\u8BDD"
|
||||
tags: []
|
||||
- rid: 7848877270717431823
|
||||
type: {class: LineMetadata, ns: Yarn.Unity.UnityLocalization, asm: YarnSpinner.Unity}
|
||||
data:
|
||||
nodeName: "\u627E\u5230\u81EA\u5351\u5BF9\u8BDD"
|
||||
tags: []
|
||||
|
||||
@@ -38,6 +38,42 @@ MonoBehaviour:
|
||||
m_Localized: "me:\u770B\u8D77\u6765\u5B8C\u5168\u4E0D\u884C\u5462\uFF0C\u8BD5\u8BD5\u522B\u7684\u5427"
|
||||
m_Metadata:
|
||||
m_Items: []
|
||||
- m_Id: 385815380393984
|
||||
m_Localized: "\u6DF1\u5165\u60C5\u7EEA\u6A21\u5757"
|
||||
m_Metadata:
|
||||
m_Items: []
|
||||
- m_Id: 385815418142720
|
||||
m_Localized: "\u60C5\u7EEA\u63A2\u7D22\u5B8C\u6210\u4E86"
|
||||
m_Metadata:
|
||||
m_Items: []
|
||||
- m_Id: 385815418142721
|
||||
m_Localized: "\u81EA\u5351\u627E\u5230\u4E86"
|
||||
m_Metadata:
|
||||
m_Items: []
|
||||
- m_Id: 385815422337024
|
||||
m_Localized: "\u7F9E\u803B\u627E\u5230\u4E86"
|
||||
m_Metadata:
|
||||
m_Items: []
|
||||
- m_Id: 385815422337025
|
||||
m_Localized: "\u6050\u60E7\u627E\u5230\u4E86"
|
||||
m_Metadata:
|
||||
m_Items: []
|
||||
- m_Id: 385815422337026
|
||||
m_Localized: "\u5360\u4F4D"
|
||||
m_Metadata:
|
||||
m_Items: []
|
||||
- m_Id: 385815422337027
|
||||
m_Localized: "\u7F9E\u803B"
|
||||
m_Metadata:
|
||||
m_Items: []
|
||||
- m_Id: 385815422337028
|
||||
m_Localized: "\u6050\u60E7"
|
||||
m_Metadata:
|
||||
m_Items: []
|
||||
- m_Id: 385815422337029
|
||||
m_Localized: "\u81EA\u5351"
|
||||
m_Metadata:
|
||||
m_Items: []
|
||||
references:
|
||||
version: 2
|
||||
RefIds: []
|
||||
|
||||
@@ -6,6 +6,8 @@ position: 205,-53
|
||||
<<switch_fix_system_to "BodyModule" "Head">>
|
||||
->深入表达模块 #line:0ef7bff
|
||||
<<switch_fix_system_to Expression>>
|
||||
->深入情绪模块
|
||||
<<switch_fix_system_to Emo>>
|
||||
// <<switch_fix_system_to Expression>>
|
||||
// <<jump VarsInit>>
|
||||
===
|
||||
|
||||
@@ -49,3 +49,32 @@ position: 480,-2840
|
||||
---
|
||||
<<jump 检查视觉>>
|
||||
===
|
||||
|
||||
title: 情绪探索完成
|
||||
tags: 待编辑
|
||||
colorID: 8
|
||||
position: 480,-2840
|
||||
---
|
||||
情绪探索完成了
|
||||
===
|
||||
title: 自卑找到了
|
||||
tags: 待编辑
|
||||
colorID: 8
|
||||
position: 480,-2840
|
||||
---
|
||||
自卑找到了
|
||||
===
|
||||
title: 羞耻找到了
|
||||
tags: 待编辑
|
||||
colorID: 8
|
||||
position: 480,-2840
|
||||
---
|
||||
羞耻找到了
|
||||
===
|
||||
title: 恐惧找到了
|
||||
tags: 待编辑
|
||||
colorID: 8
|
||||
position: 480,-2840
|
||||
---
|
||||
恐惧找到了
|
||||
===
|
||||
@@ -0,0 +1,25 @@
|
||||
title: 结束情绪模块探索
|
||||
tags:
|
||||
colorID: 8
|
||||
position: 272,-1156
|
||||
---
|
||||
|
||||
|
||||
占位
|
||||
===
|
||||
|
||||
title: 找到羞耻对话
|
||||
position: 275,-222
|
||||
---
|
||||
羞耻
|
||||
===
|
||||
title: 找到恐惧对话
|
||||
position: 275,-222
|
||||
---
|
||||
恐惧
|
||||
===
|
||||
title: 找到自卑对话
|
||||
position: 275,-222
|
||||
---
|
||||
自卑
|
||||
===
|
||||
@@ -0,0 +1,10 @@
|
||||
fileFormatVersion: 2
|
||||
guid: bb3b7274d4bc5264eb62c0f71e81029a
|
||||
ScriptedImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
script: {fileID: 11500000, guid: 94073015eacc34c1d8fc6786e43d60ca, type: 3}
|
||||
+521
-119
File diff suppressed because it is too large
Load Diff
@@ -30,6 +30,8 @@ public class MemoryProcess : MonoBehaviour
|
||||
public float targetFrequency = 1.25f; // 目标频率
|
||||
|
||||
public float targetClarity = 5.7f; // 目标频率
|
||||
|
||||
private GameObject memoryGroup;
|
||||
private float lockThreshold = 0.06f; // 锁定阈值
|
||||
|
||||
private bool isProcessing = false; // 新增变量来追踪是否正在处理记忆
|
||||
@@ -51,6 +53,7 @@ public class MemoryProcess : MonoBehaviour
|
||||
public void OpenMemoryView()
|
||||
{
|
||||
memoryView.gameObject.SetActive(true);
|
||||
memoryGroup.SetActive(true);
|
||||
}
|
||||
|
||||
public IEnumerator DropMemoryProjector()
|
||||
@@ -70,6 +73,7 @@ public class MemoryProcess : MonoBehaviour
|
||||
public void CloseMemoryView()
|
||||
{
|
||||
memoryView.gameObject.SetActive(false);
|
||||
memoryGroup.SetActive(false);
|
||||
}
|
||||
public void OnEnter()
|
||||
{
|
||||
@@ -92,6 +96,7 @@ public class MemoryProcess : MonoBehaviour
|
||||
public void OnExit()
|
||||
{
|
||||
FavoritesManager.Instance.CloseFavorites();
|
||||
CloseMemoryView();
|
||||
// 离开视图时的逻辑
|
||||
Debug.Log("MemoryView exited.");
|
||||
}
|
||||
@@ -104,6 +109,8 @@ public class MemoryProcess : MonoBehaviour
|
||||
private void InitSystem()
|
||||
{
|
||||
FixSystemCenter.SystemDic.Register(this);
|
||||
memoryGroup = transform.Find("Memory Group").gameObject;
|
||||
memoryGroup.SetActive(false);
|
||||
var virtualCam = transform.Find("Memory Camera").GetComponent<ICinemachineCamera>();
|
||||
CameraKit.Instance.RegisterCamera(CameraEnum.Memory, virtualCam);
|
||||
}
|
||||
|
||||
@@ -61,6 +61,7 @@ namespace AibisDream.FixSystem
|
||||
FixState.UF => new UfState(),
|
||||
FixState.Gear => new GearState(),
|
||||
FixState.Expression => new ExpressionState(),
|
||||
FixState.Emo => new EmoState(),
|
||||
_ => new ClinicState()
|
||||
};
|
||||
|
||||
@@ -79,7 +80,8 @@ namespace AibisDream.FixSystem
|
||||
UF,
|
||||
Expression,
|
||||
Engine,
|
||||
Gear
|
||||
Gear,
|
||||
Emo
|
||||
}
|
||||
|
||||
public interface IState
|
||||
@@ -388,6 +390,7 @@ namespace AibisDream.FixSystem
|
||||
yield return CameraKit.Instance.SwitchCamera(CameraEnum.BodyModule);
|
||||
}
|
||||
// 切换相机
|
||||
expressionManager.OpenView();
|
||||
yield return CameraKit.Instance.SwitchCamera(CameraEnum.Expression);
|
||||
yield return UIManager.Instance.GetPanel<PlayToolPanel>().FadeInAsync(0.5f);
|
||||
//expressionManager.OpenView();
|
||||
@@ -405,4 +408,39 @@ namespace AibisDream.FixSystem
|
||||
yield break;
|
||||
}
|
||||
}
|
||||
public struct EmoState : IState
|
||||
{
|
||||
public FixState GetState => FixState.Emo;
|
||||
|
||||
public void SetArgs(string args)
|
||||
{
|
||||
}
|
||||
|
||||
public IEnumerator Enter()
|
||||
{
|
||||
var emoManager = FixSystemCenter.SystemDic.Get<EmoManager>();
|
||||
if (!CameraKit.Instance.EqualToCameraState(CameraEnum.BodyModule))
|
||||
{
|
||||
var bodyModule = FixSystemCenter.SystemDic.Get<BodyModuleSystem>();
|
||||
bodyModule.SwitchModuleGroup(ModuleState.Head);
|
||||
yield return CameraKit.Instance.SwitchCamera(CameraEnum.BodyModule);
|
||||
}
|
||||
|
||||
yield return CameraKit.Instance.SwitchCamera(CameraEnum.Emo);
|
||||
emoManager.OpenView();
|
||||
yield return UIManager.Instance.GetPanel<PlayToolPanel>().FadeInAsync(0.5f);
|
||||
yield return CameraKit.Instance.SwitchCamera(CameraEnum.EmoDeep);
|
||||
yield return UIManager.Instance.GetPanel<PlayToolPanel>().FadeOutAsync(0.5f);
|
||||
}
|
||||
|
||||
public IEnumerator Exit()
|
||||
{
|
||||
var emoManager = FixSystemCenter.SystemDic.Get<EmoManager>();
|
||||
var bodyModuleSystem = FixSystemCenter.SystemDic.Get<BodyModuleSystem>();
|
||||
bodyModuleSystem.ResetPlug();
|
||||
emoManager.CloseView();
|
||||
yield break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -19,18 +19,22 @@ namespace AibisDream.Framework
|
||||
|
||||
#region 相机组件
|
||||
|
||||
private CinemachineBrain _cameraBrain;
|
||||
private CinemachineBrain _orthoCameraBrain;
|
||||
private CinemachineBrain _perspectiveCameraBrain;
|
||||
private readonly Dictionary<CameraEnum, ICinemachineCamera> _virtualCameraDict = new();
|
||||
private readonly Dictionary<CameraEnum, CamState> _camInitStateDict = new();
|
||||
|
||||
private CameraEnum _curCameraEnum;
|
||||
private CamState _curInitState;
|
||||
public Camera uiCamera;
|
||||
private Camera _orthoMainCamera;
|
||||
private Camera _perspectiveMainCamera;
|
||||
|
||||
private struct CamState
|
||||
{
|
||||
public Vector3 pos;
|
||||
public float initOrthoSize;
|
||||
public bool isPerspective;
|
||||
}
|
||||
|
||||
#endregion
|
||||
@@ -41,11 +45,18 @@ namespace AibisDream.Framework
|
||||
|
||||
public override void OnSingletonInit()
|
||||
{
|
||||
_cameraBrain = Camera.main?.GetComponent<CinemachineBrain>();
|
||||
// 获取正交相机
|
||||
_orthoMainCamera = Camera.main;
|
||||
_orthoCameraBrain = _orthoMainCamera?.GetComponent<CinemachineBrain>();
|
||||
|
||||
// 获取透视相机
|
||||
_perspectiveMainCamera = GameObject.Find("PerspectiveMainCamera")?.GetComponent<Camera>();
|
||||
_perspectiveCameraBrain = _perspectiveMainCamera?.GetComponent<CinemachineBrain>();
|
||||
|
||||
_curCameraEnum = CameraEnum.Default;
|
||||
|
||||
// 获取UICamera
|
||||
if (Camera.main && Camera.main.TryGetComponent<UniversalAdditionalCameraData>(out var cameraData))
|
||||
if (_orthoMainCamera && _orthoMainCamera.TryGetComponent<UniversalAdditionalCameraData>(out var cameraData))
|
||||
{
|
||||
// 获取Stack Cameras
|
||||
var stackCameras = cameraData.cameraStack;
|
||||
@@ -76,7 +87,7 @@ namespace AibisDream.Framework
|
||||
}
|
||||
}
|
||||
|
||||
public void RegisterCamera(CameraEnum camType, ICinemachineCamera virtualCamera)
|
||||
public void RegisterCamera(CameraEnum camType, ICinemachineCamera virtualCamera, bool isPerspective = false)
|
||||
{
|
||||
_virtualCameraDict[camType] = virtualCamera;
|
||||
|
||||
@@ -84,7 +95,8 @@ namespace AibisDream.Framework
|
||||
{
|
||||
pos = virtualCamera.VirtualCameraGameObject.transform.localPosition,
|
||||
initOrthoSize = virtualCamera.VirtualCameraGameObject.gameObject
|
||||
.GetComponent<CinemachineVirtualCamera>().m_Lens.OrthographicSize
|
||||
.GetComponent<CinemachineVirtualCamera>().m_Lens.OrthographicSize,
|
||||
isPerspective = isPerspective
|
||||
};
|
||||
_camInitStateDict[camType] = initState;
|
||||
}
|
||||
@@ -142,6 +154,12 @@ namespace AibisDream.Framework
|
||||
yield break;
|
||||
}
|
||||
|
||||
// 切换主相机
|
||||
bool isPerspective = _camInitStateDict[camType].isPerspective;
|
||||
_orthoMainCamera.gameObject.SetActive(!isPerspective);
|
||||
_perspectiveMainCamera.gameObject.SetActive(isPerspective);
|
||||
|
||||
// 设置虚拟相机优先级
|
||||
foreach (var camPair in _virtualCameraDict)
|
||||
{
|
||||
if (camPair.Key == camType) camPair.Value.Priority = HighPriority;
|
||||
@@ -149,13 +167,17 @@ namespace AibisDream.Framework
|
||||
}
|
||||
|
||||
_curInitState = _camInitStateDict[camType];
|
||||
yield return new WaitForSeconds(_cameraBrain.m_DefaultBlend.BlendTime);
|
||||
_curCameraEnum = camType;
|
||||
|
||||
// 等待相机切换完成
|
||||
var activeBrain = isPerspective ? _perspectiveCameraBrain : _orthoCameraBrain;
|
||||
yield return new WaitForSeconds(activeBrain.m_DefaultBlend.BlendTime);
|
||||
}
|
||||
|
||||
public Tween TransCamera(Vector3 targetPos, float targetOrthographicSize, float duration)
|
||||
{
|
||||
// 寻找现在正在激活的相机
|
||||
var curCamera = _cameraBrain.ActiveVirtualCamera;
|
||||
var curCamera = _orthoCameraBrain.ActiveVirtualCamera;
|
||||
|
||||
var sq = DOTween.Sequence();
|
||||
// 移动
|
||||
@@ -173,7 +195,7 @@ namespace AibisDream.Framework
|
||||
|
||||
public IEnumerator TransCameraAsync(Vector3 targetPos, float duration)
|
||||
{
|
||||
var curCamera = _cameraBrain.ActiveVirtualCamera;
|
||||
var curCamera = _orthoCameraBrain.ActiveVirtualCamera;
|
||||
yield return curCamera.DOLocalMove(targetPos, duration).WaitForCompletion();
|
||||
}
|
||||
|
||||
@@ -191,11 +213,22 @@ namespace AibisDream.Framework
|
||||
[Obsolete]
|
||||
public IEnumerator ShakeCamera(float duration, float strength, int vibrate)
|
||||
{
|
||||
var curCamera = _cameraBrain.ActiveVirtualCamera;
|
||||
var curCamera = _orthoCameraBrain.ActiveVirtualCamera;
|
||||
yield return curCamera.VirtualCameraGameObject.transform
|
||||
.DOShakePosition(duration, strength, vibrate, 90, false, false)
|
||||
.WaitForCompletion();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取当前激活的相机
|
||||
/// </summary>
|
||||
public Camera GetCurrentCamera()
|
||||
{
|
||||
return _camInitStateDict.TryGetValue(_curCameraEnum, out var state) && state.isPerspective ?
|
||||
_perspectiveMainCamera :
|
||||
_orthoMainCamera;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static class CinemachineExtension
|
||||
@@ -273,5 +306,7 @@ namespace AibisDream.Framework
|
||||
Gear,
|
||||
EyeDeep,
|
||||
ExpressionDeep,
|
||||
Emo,
|
||||
EmoDeep
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
using UnityEngine;
|
||||
using AibisDream.FixSystem;
|
||||
using Cinemachine;
|
||||
using AibisDream.Framework;
|
||||
|
||||
namespace AibisDream
|
||||
{
|
||||
public class EmoManager : MonoBehaviour
|
||||
{
|
||||
private GameObject emoView;
|
||||
|
||||
void Start()
|
||||
{
|
||||
FixSystemCenter.SystemDic.Register(this);
|
||||
emoView = transform.Find("Emo View").gameObject;
|
||||
var virtualCam = transform.Find("Emo Camera").GetComponent<ICinemachineCamera>();
|
||||
var virtualCam2 = transform.Find("Emo Deep Camera").GetComponent<ICinemachineCamera>();
|
||||
CameraKit.Instance.RegisterCamera(CameraEnum.Emo, virtualCam);
|
||||
CameraKit.Instance.RegisterCamera(CameraEnum.EmoDeep, virtualCam2,true);
|
||||
}
|
||||
|
||||
public void OpenView()
|
||||
{
|
||||
gameObject.SetActive(true);
|
||||
}
|
||||
|
||||
public void CloseView()
|
||||
{
|
||||
gameObject.SetActive(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e519c3520e8cfc546a9b52372bd21274
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -5,6 +5,7 @@ using UnityEngine.UI;
|
||||
using TMPro;
|
||||
using Yarn.Unity;
|
||||
using AibisDream;
|
||||
using AibisDream.Framework;
|
||||
|
||||
[ExecuteAlways]
|
||||
public class LakeLineDrawer : ImmediateModeShapeDrawer
|
||||
@@ -218,6 +219,7 @@ public class LakeLineDrawer : ImmediateModeShapeDrawer
|
||||
|
||||
private void Start()
|
||||
{
|
||||
|
||||
// 添加按钮点击事件监听
|
||||
if (upButton != null) upButton.onClick.AddListener(MoveUp);
|
||||
if (downButton != null) downButton.onClick.AddListener(MoveDown);
|
||||
@@ -783,6 +785,9 @@ public class LakeLineDrawer : ImmediateModeShapeDrawer
|
||||
// 计算每个点的位置和涟漪效果
|
||||
private void CalculatePointPositions(float step, float halfField, float halfVisible)
|
||||
{
|
||||
// 获取当前物体的位置作为偏移
|
||||
Vector3 followOffset = transform.position;
|
||||
|
||||
// 遍历每个点,计算其位置和涟漪影响
|
||||
for (int i = 0; i < pointCount; i++)
|
||||
{
|
||||
@@ -806,8 +811,8 @@ public class LakeLineDrawer : ImmediateModeShapeDrawer
|
||||
|
||||
float finalY = baseHeight + ripple.heightOffset;
|
||||
|
||||
// 创建点的坐标
|
||||
Vector3 pos = new Vector3(x, finalY, z);
|
||||
// 创建点的坐标,添加跟随偏移
|
||||
Vector3 pos = new Vector3(x, finalY, z) + followOffset;
|
||||
points[index] = pos; // 存储计算得到的点
|
||||
|
||||
// 计算亮度:基于高度,越高越亮
|
||||
@@ -875,6 +880,9 @@ public class LakeLineDrawer : ImmediateModeShapeDrawer
|
||||
|
||||
private void DrawEdgeLines(float halfField, float halfVisible)
|
||||
{
|
||||
// 获取当前物体的位置作为偏移
|
||||
Vector3 followOffset = transform.position;
|
||||
|
||||
// 绘制湖面边缘的向下线条(无扰动)
|
||||
float step = fieldSize / (pointCount - 1);
|
||||
float halfEdgeLineLength = edgeLineLength * 0.5f; // 设置边缘线长度
|
||||
@@ -884,9 +892,9 @@ public class LakeLineDrawer : ImmediateModeShapeDrawer
|
||||
{
|
||||
float worldZ = z + fieldOffset.y;
|
||||
float x = halfField + fieldOffset.x; // 右边
|
||||
DrawEdgeLine(x, worldZ, halfVisible);
|
||||
DrawEdgeLine(x, worldZ, halfVisible, followOffset);
|
||||
x = -halfField + fieldOffset.x; // 左边
|
||||
DrawEdgeLine(x, worldZ, halfVisible);
|
||||
DrawEdgeLine(x, worldZ, halfVisible, followOffset);
|
||||
}
|
||||
|
||||
// 2. 绘制 Z 轴的边缘线(上边和下边)
|
||||
@@ -894,13 +902,13 @@ public class LakeLineDrawer : ImmediateModeShapeDrawer
|
||||
{
|
||||
float worldX = x + fieldOffset.x;
|
||||
float z = halfField + fieldOffset.y; // 上边
|
||||
DrawEdgeLine(worldX, z, halfVisible);
|
||||
DrawEdgeLine(worldX, z, halfVisible, followOffset);
|
||||
z = -halfField + fieldOffset.y; // 下边
|
||||
DrawEdgeLine(worldX, z, halfVisible);
|
||||
DrawEdgeLine(worldX, z, halfVisible, followOffset);
|
||||
}
|
||||
}
|
||||
|
||||
private void DrawEdgeLine(float x, float z, float halfVisible)
|
||||
private void DrawEdgeLine(float x, float z, float halfVisible, Vector3 followOffset)
|
||||
{
|
||||
// 检查点是否在可视区域内
|
||||
if (Mathf.Abs(x) > halfVisible || Mathf.Abs(z) > halfVisible)
|
||||
@@ -912,10 +920,10 @@ public class LakeLineDrawer : ImmediateModeShapeDrawer
|
||||
float startY = GetHeight(x - fieldOffset.x, z - fieldOffset.y, time); // 获取湖面高度
|
||||
|
||||
// 设置边缘线的起始点
|
||||
Vector3 start = new Vector3(x, startY, z);
|
||||
Vector3 start = new Vector3(x, startY, z) + followOffset;
|
||||
|
||||
// 设置边缘线的终止点,向下延伸一定的长度
|
||||
Vector3 end = new Vector3(x, startY - edgeLineLength, z); // 向下延伸的线条
|
||||
Vector3 end = new Vector3(x, startY - edgeLineLength, z) + followOffset; // 向下延伸的线条
|
||||
|
||||
// 设置颜色,基于高度
|
||||
float heightT = Mathf.InverseLerp(-waveHeight, waveHeight, startY);
|
||||
@@ -929,6 +937,9 @@ public class LakeLineDrawer : ImmediateModeShapeDrawer
|
||||
// 绘制目标点
|
||||
private void DrawTargetPoints()
|
||||
{
|
||||
// 获取当前物体的位置作为偏移
|
||||
Vector3 followOffset = transform.position;
|
||||
|
||||
float step = fieldSize / (pointCount - 1);
|
||||
float halfField = fieldSize * 0.5f;
|
||||
float halfVisible = visibleAreaSize * 0.5f;
|
||||
@@ -950,7 +961,7 @@ public class LakeLineDrawer : ImmediateModeShapeDrawer
|
||||
|
||||
// 添加额外的起伏效果和高度偏移
|
||||
float floatOffset = Mathf.Sin(time * floatFrequency) * floatAmplitude;
|
||||
Vector3 position = new Vector3(x, height + floatOffset + targetHeightOffset, z);
|
||||
Vector3 position = new Vector3(x, height + floatOffset + targetHeightOffset, z) + followOffset;
|
||||
|
||||
// 计算旋转
|
||||
float rotation = time * rotationSpeed;
|
||||
@@ -1015,6 +1026,9 @@ public class LakeLineDrawer : ImmediateModeShapeDrawer
|
||||
|
||||
private void DrawObstacles()
|
||||
{
|
||||
// 获取当前物体的位置作为偏移
|
||||
Vector3 followOffset = transform.position;
|
||||
|
||||
float step = fieldSize / (pointCount - 1);
|
||||
float halfField = fieldSize * 0.5f;
|
||||
float halfVisible = visibleAreaSize * 0.5f;
|
||||
@@ -1045,7 +1059,7 @@ public class LakeLineDrawer : ImmediateModeShapeDrawer
|
||||
float riseHeight = obstacleHeight * (Application.isPlaying ? obstacle.riseProgress : 1f);
|
||||
|
||||
// 绘制障碍物
|
||||
Vector3 basePos = new Vector3(x, height, z);
|
||||
Vector3 basePos = new Vector3(x, height, z) + followOffset;
|
||||
float halfWidth = obstacleWidth * 0.5f;
|
||||
|
||||
// 绘制底部
|
||||
@@ -1071,6 +1085,9 @@ public class LakeLineDrawer : ImmediateModeShapeDrawer
|
||||
|
||||
private void DrawCollisionEffects()
|
||||
{
|
||||
// 获取当前物体的位置作为偏移
|
||||
Vector3 followOffset = transform.position;
|
||||
|
||||
foreach (var effect in collisionEffects)
|
||||
{
|
||||
float elapsed = Time.time - effect.startTime;
|
||||
@@ -1086,7 +1103,7 @@ public class LakeLineDrawer : ImmediateModeShapeDrawer
|
||||
// 计算效果位置
|
||||
Vector3 effectPos = new Vector3(effect.position.x,
|
||||
GetHeight(effect.position.x - fieldOffset.x, effect.position.y - fieldOffset.y, time),
|
||||
effect.position.y);
|
||||
effect.position.y) + followOffset;
|
||||
|
||||
// 绘制同心圆涟漪
|
||||
for (int i = 0; i < collisionEffectRingCount; i++)
|
||||
|
||||
@@ -21,7 +21,7 @@ namespace AibisDream
|
||||
|
||||
private void Start()
|
||||
{
|
||||
_expressionManager = transform.parent.GetComponent<ExpressionManager>();
|
||||
_expressionManager = transform.parent.transform.parent.GetComponent<ExpressionManager>();
|
||||
InitializeSystem();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user