添加魔力队长角色说话UI

This commit is contained in:
ZYT
2025-09-05 18:18:20 +08:00
parent a655d8abd1
commit fda352d213
8 changed files with 656 additions and 140 deletions

View File

@@ -1,5 +1,30 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1101 &-8368975365714525122
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions:
- m_ConditionMode: 1
m_ConditionEvent: Wave
m_EventTreshold: 0
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: 9219204548452869482}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.25
m_TransitionOffset: 0
m_ExitTime: 0.9754902
m_HasExitTime: 1
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!1107 &-6094239901385682760
AnimatorStateMachine:
serializedVersion: 6
@@ -11,10 +36,7 @@ AnimatorStateMachine:
m_ChildStates:
- serializedVersion: 1
m_State: {fileID: 9219204548452869482}
m_Position: {x: 350, y: 50, z: 0}
- serializedVersion: 1
m_State: {fileID: -3392849800848439463}
m_Position: {x: 350, y: 130, z: 0}
m_Position: {x: 350, y: 110, z: 0}
- serializedVersion: 1
m_State: {fileID: -4766821419364841988}
m_Position: {x: 350, y: 220, z: 0}
@@ -27,32 +49,7 @@ AnimatorStateMachine:
m_EntryPosition: {x: 50, y: 120, z: 0}
m_ExitPosition: {x: 800, y: 120, z: 0}
m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
m_DefaultState: {fileID: -3392849800848439463}
--- !u!1101 &-4795927336264696591
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions:
- m_ConditionMode: 1
m_ConditionEvent: Leave
m_EventTreshold: 0
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: -4766821419364841988}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.25
m_TransitionOffset: 0
m_ExitTime: 0.9166667
m_HasExitTime: 0
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
m_DefaultState: {fileID: 9219204548452869482}
--- !u!1102 &-4766821419364841988
AnimatorState:
serializedVersion: 6
@@ -63,7 +60,8 @@ AnimatorState:
m_Name: "\u5F00\u95E8"
m_Speed: 1
m_CycleOffset: 0
m_Transitions: []
m_Transitions:
- {fileID: -8368975365714525122}
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
@@ -79,59 +77,6 @@ AnimatorState:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1102 &-3392849800848439463
AnimatorState:
serializedVersion: 6
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Idle
m_Speed: 1
m_CycleOffset: 0
m_Transitions:
- {fileID: 7588093096655226229}
- {fileID: -4795927336264696591}
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0
m_WriteDefaultValues: 1
m_Mirror: 0
m_SpeedParameterActive: 0
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: 7400000, guid: 2539fffa8ee1db64fbea40094c9ffc90, type: 2}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
m_CycleOffsetParameter:
m_TimeParameter:
--- !u!1101 &-1359000616218448525
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_Conditions:
- m_ConditionMode: 1
m_ConditionEvent: Idle
m_EventTreshold: 0
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: -3392849800848439463}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.25
m_TransitionOffset: 0
m_ExitTime: 0.95
m_HasExitTime: 0
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
m_CanTransitionToSelf: 1
--- !u!91 &9100000
AnimatorController:
m_ObjectHideFlags: 0
@@ -147,12 +92,6 @@ AnimatorController:
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 9100000}
- m_Name: Idle
m_Type: 9
m_DefaultFloat: 0
m_DefaultInt: 0
m_DefaultBool: 0
m_Controller: {fileID: 9100000}
- m_Name: Wave
m_Type: 9
m_DefaultFloat: 0
@@ -172,7 +111,7 @@ AnimatorController:
m_IKPass: 0
m_SyncedLayerAffectsTiming: 0
m_Controller: {fileID: 9100000}
--- !u!1101 &7588093096655226229
--- !u!1101 &7803710899502228545
AnimatorStateTransition:
m_ObjectHideFlags: 1
m_CorrespondingSourceObject: {fileID: 0}
@@ -181,18 +120,18 @@ AnimatorStateTransition:
m_Name:
m_Conditions:
- m_ConditionMode: 1
m_ConditionEvent: Wave
m_ConditionEvent: Leave
m_EventTreshold: 0
m_DstStateMachine: {fileID: 0}
m_DstState: {fileID: 9219204548452869482}
m_DstState: {fileID: -4766821419364841988}
m_Solo: 0
m_Mute: 0
m_IsExit: 0
serializedVersion: 3
m_TransitionDuration: 0.25
m_TransitionOffset: 0
m_ExitTime: 0.9166667
m_HasExitTime: 0
m_ExitTime: 0.95
m_HasExitTime: 1
m_HasFixedDuration: 1
m_InterruptionSource: 0
m_OrderedInterruption: 1
@@ -208,7 +147,7 @@ AnimatorState:
m_Speed: 1
m_CycleOffset: 0
m_Transitions:
- {fileID: -1359000616218448525}
- {fileID: 7803710899502228545}
m_StateMachineBehaviours: []
m_Position: {x: 50, y: 50, z: 0}
m_IKOnFeet: 0

View File

@@ -1,5 +1,241 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &2590438463261420928
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1252382800004615965}
- component: {fileID: 8056864794181880997}
- component: {fileID: 9082359404684480479}
- component: {fileID: 4432812930107315592}
m_Layer: 0
m_Name: TextCanvas
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1252382800004615965
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2590438463261420928}
m_LocalRotation: {x: 0, y: 0.7071068, z: 0, w: 0.7071068}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0.001, y: 0.001, z: 0.001}
m_ConstrainProportionsScale: 1
m_Children:
- {fileID: 1886413755794540654}
m_Father: {fileID: 2361883826336231568}
m_LocalEulerAnglesHint: {x: 0, y: 90, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: -1, y: 1.4}
m_SizeDelta: {x: 1342, y: 582}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!223 &8056864794181880997
Canvas:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2590438463261420928}
m_Enabled: 1
serializedVersion: 3
m_RenderMode: 2
m_Camera: {fileID: 0}
m_PlaneDistance: 100
m_PixelPerfect: 0
m_ReceivesEvents: 1
m_OverrideSorting: 0
m_OverridePixelPerfect: 0
m_SortingBucketNormalizedSize: 0
m_VertexColorAlwaysGammaSpace: 0
m_AdditionalShaderChannelsFlag: 25
m_UpdateRectTransformForStandalone: 0
m_SortingLayerID: 0
m_SortingOrder: 0
m_TargetDisplay: 0
--- !u!114 &9082359404684480479
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2590438463261420928}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
m_Name:
m_EditorClassIdentifier:
m_UiScaleMode: 0
m_ReferencePixelsPerUnit: 100
m_ScaleFactor: 1
m_ReferenceResolution: {x: 800, y: 600}
m_ScreenMatchMode: 0
m_MatchWidthOrHeight: 0
m_PhysicalUnit: 3
m_FallbackScreenDPI: 96
m_DefaultSpriteDPI: 96
m_DynamicPixelsPerUnit: 1
m_PresetInfoIsWorld: 1
--- !u!114 &4432812930107315592
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2590438463261420928}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3}
m_Name:
m_EditorClassIdentifier:
m_IgnoreReversedGraphics: 1
m_BlockingObjects: 0
m_BlockingMask:
serializedVersion: 2
m_Bits: 4294967295
--- !u!1 &3021686130682366389
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1886413755794540654}
- component: {fileID: 2047666986421561977}
- component: {fileID: 2527627372886660134}
m_Layer: 0
m_Name: speedTxt
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1886413755794540654
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3021686130682366389}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1252382800004615965}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 800, y: 268.1}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &2047666986421561977
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3021686130682366389}
m_CullTransparentMesh: 1
--- !u!114 &2527627372886660134
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3021686130682366389}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: "\u6B22\u8FCE\u6765\u5230\u5C0F\u5C0F\u5E7B\u5BA0\u7684\u4E16\u754C\uFF0C\u8FD9\u91CC\u662F\u4E00\u7247\u73B0\u5B9E\u4E0E\u5947\u5E7B\u4EA4\u7EC7\u7684\u4E16\u754C\uFF0C\u4F60\u5C06\u5728\u8FD9\u91CC\uFF0C\u9047\u5230\u5C5E\u4E8E\u4F60\u7684\u5C0F\u5C0F\u5E7B\u5BA0\uFF0C\u548C\u4ED6\u4EEC\u5E76\u80A9\u4F5C\u6218."
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 9861a6325d4fe384cabed1305ec8e929, type: 2}
m_sharedMaterial: {fileID: -709690668904339887, guid: 9861a6325d4fe384cabed1305ec8e929, type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4294967295
m_fontColor: {r: 1, g: 1, b: 1, a: 1}
m_enableVertexGradient: 0
m_colorMode: 3
m_fontColorGradient:
topLeft: {r: 1, g: 1, b: 1, a: 1}
topRight: {r: 1, g: 1, b: 1, a: 1}
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
bottomRight: {r: 1, g: 1, b: 1, a: 1}
m_fontColorGradientPreset: {fileID: 0}
m_spriteAsset: {fileID: 0}
m_tintAllSprites: 0
m_StyleSheet: {fileID: 0}
m_TextStyleHashCode: -1183493901
m_overrideHtmlColors: 0
m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_fontSize: 63.56
m_fontSizeBase: 63.56
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontStyle: 0
m_HorizontalAlignment: 2
m_VerticalAlignment: 512
m_textAlignment: 65535
m_characterSpacing: 0
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_enableWordWrapping: 1
m_wordWrappingRatios: 0.4
m_overflowMode: 0
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 1
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
m_parseCtrlCharacters: 1
m_isOrthographic: 1
m_isCullingEnabled: 0
m_horizontalMapping: 0
m_verticalMapping: 0
m_uvLineOffset: 0
m_geometrySortingOrder: 0
m_IsTextObjectScaleStatic: 0
m_VertexBufferAutoSizeReduction: 0
m_useMaxVisibleDescender: 1
m_pageToDisplay: 1
m_margin: {x: 0, y: 0, z: 0, w: 0}
m_isUsingLegacyAnimationComponent: 0
m_isVolumetricText: 0
m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
--- !u!1001 &2832097513597540219
PrefabInstance:
m_ObjectHideFlags: 0
@@ -54,7 +290,10 @@ PrefabInstance:
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedGameObjects:
- targetCorrespondingSourceObject: {fileID: -8679921383154817045, guid: c01ceeca5f5d5cf4586a818ab9edd5e6, type: 3}
insertIndex: -1
addedObject: {fileID: 1252382800004615965}
m_AddedComponents:
- targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: c01ceeca5f5d5cf4586a818ab9edd5e6, type: 3}
insertIndex: -1
@@ -66,6 +305,11 @@ PrefabInstance:
insertIndex: -1
addedObject: {fileID: 2512095010723234995}
m_SourcePrefab: {fileID: 100100000, guid: c01ceeca5f5d5cf4586a818ab9edd5e6, type: 3}
--- !u!4 &2361883826336231568 stripped
Transform:
m_CorrespondingSourceObject: {fileID: -8679921383154817045, guid: c01ceeca5f5d5cf4586a818ab9edd5e6, type: 3}
m_PrefabInstance: {fileID: 2832097513597540219}
m_PrefabAsset: {fileID: 0}
--- !u!1 &3138103488680208938 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 919132149155446097, guid: c01ceeca5f5d5cf4586a818ab9edd5e6, type: 3}
@@ -111,6 +355,7 @@ MonoBehaviour:
minLeaveAnimationTime: 3
maxLeaveAnimationTime: 4
waveRotationAngle: 90
speedTxt: {fileID: 2527627372886660134}
--- !u!195 &2512095010723234995
NavMeshAgent:
m_ObjectHideFlags: 0

View File

@@ -1,7 +1,9 @@
using DG.Tweening;
using Knife.Effects.SimpleController;
using System;
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.AI;
@@ -12,16 +14,14 @@ public class AIController : MonoBehaviour
//添加动画参数
public string waveAnimationTrigger = "Wave";//打招呼动画触发器
public string idleAnimationTrigger = "Idle"; // 待机动画触发器
public string leaveAnimationTrigger = "Leave";//离开动画触发器
//添加:添加离开动画最短播放时间
public float minLeaveAnimationTime = 3f; // 离开动画最少播放3秒
public float maxLeaveAnimationTime = 6f; // 离开动画最多播放4秒
//添加:打招呼动画旋转角度
public float waveRotationAngle = 90f; // 打招呼时相对于玩家的旋转角度
//添加:旋转过渡参数
public float rotationDuration = 1.5f;//旋转过渡时间
//添加介绍完成事件
public event Action OnIntroductionComplete;
@@ -33,8 +33,9 @@ public class AIController : MonoBehaviour
private Coroutine introductionCoroutine;
private bool hasIntroductionCompleted = false;//添加标志位
//添加:存储初始旋转
private Quaternion initialRotation;
//文本变量
public TMP_Text speedTxt;
private const float TxtSpeed = 1; //文字显示时间
private void Awake()
{
@@ -53,9 +54,13 @@ public class AIController : MonoBehaviour
private void Start()
{
//存储初始旋转
initialRotation = transform.rotation;
FindPlayer();
//初始时隐藏文本
if (speedTxt != null)
{
speedTxt.gameObject.SetActive(false);
}
}
//动态查找Player
@@ -129,15 +134,12 @@ public class AIController : MonoBehaviour
{
Debug.Log("开始介绍开场白");
//面向玩家
transform.LookAt(playerTransform);
//存储当前朝向作为待机朝向
Quaternion idleRotation = transform.rotation;
//播放打招呼动画
if (animator != null && !string.IsNullOrEmpty(waveAnimationTrigger))
{
//面向玩家
transform.LookAt(playerTransform);
//旋转到打招呼方向 - 修正朝向问题
//计算正确的旋转方向向左旋转90度
transform.Rotate(Vector3.up, waveRotationAngle);
@@ -148,53 +150,79 @@ public class AIController : MonoBehaviour
//同时播放开场白音频
if (introAudio != null)
{
//只在打招呼的时候显示文本
if (speedTxt != null)
{
speedTxt.gameObject.SetActive(true);
StartTxt("欢迎来到魔力队长的未来世界,宇宙的凶恶生物正源源不断的\r\n侵入我们的领地让我们携手努力拯救这个世界保护人们不再受到伤害\r\n");
}
Debug.Log("玩家音频播放:" + introAudio.name);
audioSource.clip = introAudio;
audioSource.Play();
}
//等待动画播放一会儿再开始音频
yield return new WaitForSeconds(10f);
//等待音频播放但在结束前2秒隐藏文本
float audioLength = introAudio.length;
yield return new WaitForSeconds(audioLength - 2f);//提前两秒
//旋转回待机方向(面向玩家)
transform.rotation = idleRotation;
//播放待机动画
if (!string.IsNullOrEmpty(idleAnimationTrigger))
{
animator.SetTrigger(idleAnimationTrigger);
Debug.Log("播放待机动画");
}
//等待音频播放完毕
if (introAudio != null)
{
float remainingAudioTime = introAudio.length - 2f;
if (remainingAudioTime > 0)
//音频播放完毕后隐藏文本
if (speedTxt != null)
{
yield return new WaitForSeconds(remainingAudioTime);
HideTxt();
}
//等待剩余的2秒音频播放时间
yield return new WaitForSeconds(2f);
Debug.Log("介绍音频完成");
}
else
{
////等待动画播放一会儿再开始音频
//yield return new WaitForSeconds(12f);
//如果没有音频等待12秒后隐藏文本
yield return new WaitForSeconds(10f);//减少等待时间,因为不需要等待音频
if (speedTxt != null)
{
HideTxt();
}
yield return new WaitForSeconds(2f);//再等待两秒
}
}
else
{
Debug.LogError("AI身上没有介绍音频");
yield return new WaitForSeconds(3f);
Debug.LogError("AI身上没有介绍音频");
yield return new WaitForSeconds(3f);
}
//播放离开动画
if (animator != null && !string.IsNullOrEmpty(leaveAnimationTrigger))
{
//修改在播放离开动画前让AI背对玩家
if (playerTransform != null)
{
//计算背对玩家的方向
Vector3 leftDirection = playerTransform.right;
leftDirection.y = 0;//保持水平方向
if (leftDirection != Vector3.zero)
{
////旋转到背对玩家的方向
//transform.rotation = Quaternion.LookRotation(leftDirection);
//平滑旋转到左侧离开的方向
Quaternion targetRotation = Quaternion.LookRotation(leftDirection);
yield return StartCoroutine(SmoothRotate(targetRotation, rotationDuration));
}
}
animator.SetTrigger(leaveAnimationTrigger);
Debug.Log("播放离开动画");
//修改随机选择3-4秒的播放时间
float leaveTime = UnityEngine.Random.Range(minLeaveAnimationTime, maxLeaveAnimationTime);
//等待离开动画播放
yield return new WaitForSeconds(leaveTime);
Debug.Log($"离开动画播放了 {leaveTime} 秒");
yield return new WaitForSeconds(6f);
}
//触发介绍完成事件
@@ -209,7 +237,50 @@ public class AIController : MonoBehaviour
//Destroy(gameObject);
}
//添加平滑旋转协程
private IEnumerator SmoothRotate(Quaternion targetRotation,float duration)
{
float elapsedTime = 0f;
Quaternion startRotation = transform.rotation;
while (elapsedTime < duration)
{
transform.rotation = Quaternion.Slerp(startRotation, targetRotation, elapsedTime / duration);
elapsedTime += Time.deltaTime;
yield return null;
}
//确保最终旋转到目标角度
transform.rotation = targetRotation;
}
public void StartTxt(string txt, Action cb = null)
{
if (speedTxt == null) return;
speedTxt.text = txt;
//初始时设置文字的透明度为0完全透明
speedTxt.color = new Color(speedTxt.color.r, speedTxt.color.g, speedTxt.color.b, 0f);
// 使用DoTween实现文字的渐显效果
speedTxt.DOFade(1f, TxtSpeed).SetEase(Ease.Linear).OnComplete(() =>
{
cb?.Invoke();
}); // 渐显到完全不透明,使用线性缓动效果
}
//添加:隐藏文本的方法
public void HideTxt(Action cb = null)
{
if (speedTxt == null) return;
//使用DoTween实现文字的渐隐效果
speedTxt.DOFade(0f, TxtSpeed).SetEase(Ease.Linear).OnComplete(() =>
{
speedTxt.gameObject.SetActive(false);
cb?.Invoke();
});//渐隐到完全透明
}
private void OnDestroy()
{
//清理协程

View File

@@ -1 +1 @@
Build from ZTT at 2025/9/4 17:02:35
Build from ZTT at 2025/9/5 18:17:21

8
Assets/_Valheim.meta Normal file
View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: c5b2dbd708c84c34e91dcefd2c5be4cb
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 4270eb795eb091e44ae99c0beeb0e5c5
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,238 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &1591244745114858372
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2632196897617875225}
- component: {fileID: 6496883861991740065}
- component: {fileID: 5471081240123019739}
- component: {fileID: 604231646819748748}
m_Layer: 0
m_Name: TextCanvas
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &2632196897617875225
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1591244745114858372}
m_LocalRotation: {x: -0, y: 1, z: -0, w: 0}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0.001, y: 0.001, z: 0.001}
m_ConstrainProportionsScale: 1
m_Children:
- {fileID: 3444068391977539178}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 180, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: -0.772, y: 1.891}
m_SizeDelta: {x: 1342, y: 582}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!223 &6496883861991740065
Canvas:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1591244745114858372}
m_Enabled: 1
serializedVersion: 3
m_RenderMode: 2
m_Camera: {fileID: 0}
m_PlaneDistance: 100
m_PixelPerfect: 0
m_ReceivesEvents: 1
m_OverrideSorting: 0
m_OverridePixelPerfect: 0
m_SortingBucketNormalizedSize: 0
m_VertexColorAlwaysGammaSpace: 0
m_AdditionalShaderChannelsFlag: 25
m_UpdateRectTransformForStandalone: 0
m_SortingLayerID: 0
m_SortingOrder: 0
m_TargetDisplay: 0
--- !u!114 &5471081240123019739
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1591244745114858372}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
m_Name:
m_EditorClassIdentifier:
m_UiScaleMode: 0
m_ReferencePixelsPerUnit: 100
m_ScaleFactor: 1
m_ReferenceResolution: {x: 800, y: 600}
m_ScreenMatchMode: 0
m_MatchWidthOrHeight: 0
m_PhysicalUnit: 3
m_FallbackScreenDPI: 96
m_DefaultSpriteDPI: 96
m_DynamicPixelsPerUnit: 1
m_PresetInfoIsWorld: 1
--- !u!114 &604231646819748748
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1591244745114858372}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3}
m_Name:
m_EditorClassIdentifier:
m_IgnoreReversedGraphics: 1
m_BlockingObjects: 0
m_BlockingMask:
serializedVersion: 2
m_Bits: 4294967295
--- !u!1 &2020151552286627761
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3444068391977539178}
- component: {fileID: 2994028311585240189}
- component: {fileID: 1654445113541462562}
m_Layer: 0
m_Name: speedTxt
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &3444068391977539178
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2020151552286627761}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 2632196897617875225}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 800, y: 268.1}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &2994028311585240189
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2020151552286627761}
m_CullTransparentMesh: 1
--- !u!114 &1654445113541462562
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2020151552286627761}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: "\u6B22\u8FCE\u6765\u5230\u5C0F\u5C0F\u5E7B\u5BA0\u7684\u4E16\u754C\uFF0C\u8FD9\u91CC\u662F\u4E00\u7247\u73B0\u5B9E\u4E0E\u5947\u5E7B\u4EA4\u7EC7\u7684\u4E16\u754C\uFF0C\u4F60\u5C06\u5728\u8FD9\u91CC\uFF0C\u9047\u5230\u5C5E\u4E8E\u4F60\u7684\u5C0F\u5C0F\u5E7B\u5BA0\uFF0C\u548C\u4ED6\u4EEC\u5E76\u80A9\u4F5C\u6218."
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 9861a6325d4fe384cabed1305ec8e929, type: 2}
m_sharedMaterial: {fileID: -709690668904339887, guid: 9861a6325d4fe384cabed1305ec8e929, type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4294967295
m_fontColor: {r: 1, g: 1, b: 1, a: 1}
m_enableVertexGradient: 0
m_colorMode: 3
m_fontColorGradient:
topLeft: {r: 1, g: 1, b: 1, a: 1}
topRight: {r: 1, g: 1, b: 1, a: 1}
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
bottomRight: {r: 1, g: 1, b: 1, a: 1}
m_fontColorGradientPreset: {fileID: 0}
m_spriteAsset: {fileID: 0}
m_tintAllSprites: 0
m_StyleSheet: {fileID: 0}
m_TextStyleHashCode: -1183493901
m_overrideHtmlColors: 0
m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_fontSize: 63.56
m_fontSizeBase: 63.56
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontStyle: 0
m_HorizontalAlignment: 2
m_VerticalAlignment: 512
m_textAlignment: 65535
m_characterSpacing: 0
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_enableWordWrapping: 1
m_wordWrappingRatios: 0.4
m_overflowMode: 0
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 1
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
m_parseCtrlCharacters: 1
m_isOrthographic: 1
m_isCullingEnabled: 0
m_horizontalMapping: 0
m_verticalMapping: 0
m_uvLineOffset: 0
m_geometrySortingOrder: 0
m_IsTextObjectScaleStatic: 0
m_VertexBufferAutoSizeReduction: 0
m_useMaxVisibleDescender: 1
m_pageToDisplay: 1
m_margin: {x: 0, y: 0, z: 0, w: 0}
m_isUsingLegacyAnimationComponent: 0
m_isVolumetricText: 0
m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: ab54e6200328f7f46b334346d07904b5
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant: