引擎修改

This commit is contained in:
2025-01-23 18:32:25 +08:00
parent c60602424a
commit 2825fbef47
23 changed files with 726 additions and 227 deletions
Binary file not shown.
@@ -0,0 +1,242 @@
fileFormatVersion: 2
guid: 64008f2c27d35ac409386015a6bb5887
ScriptedImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 2
userData:
assetBundleName:
assetBundleVariant:
script: {fileID: 11500000, guid: b2a9591990af98743ba3ff7cf1000886, type: 3}
textureImporterSettings:
alphaSource: 1
mipMapMode: 0
enableMipMap: 1
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
convertToNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
swizzle: 50462976
isReadable: 0
streamingMipmaps: 1
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
nPOTScale: 1
sRGBTexture: 1
spriteMode: 2
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 500
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 0
flipbookColumns: 0
ignorePngGamma: 0
cookieMode: 0
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
normalMap: 0
textureFormat: 0
maxTextureSize: 0
lightmap: 0
compressionQuality: 0
linearTexture: 0
grayScaleToAlpha: 0
rGBM: 0
cubemapConvolutionSteps: 0
cubemapConvolutionExponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
applyGammaDecoding: 0
spriteImportData:
- name:
originalName:
pivot: {x: 0, y: 0}
alignment: 0
border: {x: 0, y: 0, z: 0, w: 0}
rect:
serializedVersion: 2
x: 0
y: 0
width: 0
height: 0
spriteID:
spriteBone: []
spriteOutline: []
vertices: []
spritePhysicsOutline: []
indices:
edges: []
tessellationDetail: 0
uvTransform: {x: 0, y: 0}
spritePosition: {x: 0, y: 0}
mosaicSpriteImportData: []
rigSpriteImportData:
- name: "\u56FE\u5C42 2"
originalName:
pivot: {x: 0.5, y: 0.5}
alignment: 0
border: {x: 0, y: 0, z: 0, w: 0}
rect:
serializedVersion: 2
x: 4
y: 4
width: 1823
height: 1127
spriteID: bebac499b546daf4893c5ecd0bf27294
spriteBone: []
spriteOutline: []
vertices: []
spritePhysicsOutline: []
indices:
edges: []
tessellationDetail: 0
uvTransform: {x: 4, y: 4}
spritePosition: {x: 0, y: 0}
characterData:
bones: []
parts: []
dimension: {x: 0, y: 0}
characterGroups: []
pivot: {x: 0, y: 0}
boneReadOnly: 0
sharedRigSpriteImportData: []
sharedRigCharacterData:
bones: []
parts: []
dimension: {x: 0, y: 0}
characterGroups: []
pivot: {x: 0, y: 0}
boneReadOnly: 0
platformSettings:
- name: DefaultTexturePlatform
overridden: 0
ignorePlatformSupport: 0
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
forceMaximumCompressionQuality_BC6H_BC7: 0
crunchedCompression: 0
allowsAlphaSplitting: 0
androidETC2FallbackOverride: 0
- name: Standalone
overridden: 0
ignorePlatformSupport: 0
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
forceMaximumCompressionQuality_BC6H_BC7: 0
crunchedCompression: 0
allowsAlphaSplitting: 0
androidETC2FallbackOverride: 0
- name: Server
overridden: 0
ignorePlatformSupport: 0
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
forceMaximumCompressionQuality_BC6H_BC7: 0
crunchedCompression: 0
allowsAlphaSplitting: 0
androidETC2FallbackOverride: 0
- name: Android
overridden: 0
ignorePlatformSupport: 0
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
forceMaximumCompressionQuality_BC6H_BC7: 0
crunchedCompression: 0
allowsAlphaSplitting: 0
androidETC2FallbackOverride: 0
- name: WebGL
overridden: 0
ignorePlatformSupport: 0
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
forceMaximumCompressionQuality_BC6H_BC7: 0
crunchedCompression: 0
allowsAlphaSplitting: 0
androidETC2FallbackOverride: 0
mosaicLayers: 1
characterMode: 1
documentPivot: {x: 0, y: 0}
documentAlignment: 7
importHiddenLayers: 0
layerMappingOption: 2
generatePhysicsShape: 0
paperDollMode: 0
keepDupilcateSpriteName: 1
skeletonAssetReferenceID:
padding: 4
spriteSizeExpand: 0
spriteCategoryList:
categories: []
spritePackingTag:
resliceFromLayer: 0
mosaicPSDLayers: []
rigPSDLayers:
- name: "\u56FE\u5C42 2"
spriteName: "\u56FE\u5C42 2"
isGroup: 0
parentIndex: -1
spriteID: bebac499b546daf4893c5ecd0bf27294
layerID: 8
mosaicPosition: {x: 4, y: 4}
flatten: 0
isImported: 1
isVisible: 1
- name: "\u56FE\u5C42 1"
spriteName: "\u56FE\u5C42 1"
isGroup: 0
parentIndex: -1
spriteID: 079b5602caf6ad6459a584388bf71067
layerID: 2
mosaicPosition: {x: 4, y: 4}
flatten: 0
isImported: 0
isVisible: 0
sharedRigPSDLayers: []
pSDLayerImportSetting: []
importFileNodeState: 1
platformSettingsDirtyTick: 0
spriteSizeExpandChanged: 0
generateGOHierarchy: 0
textureAssetName:
prefabAssetName:
spriteLibAssetName:
skeletonAssetName:
secondarySpriteTextures: []
+50
View File
@@ -0,0 +1,50 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: FadeRing
m_Shader: {fileID: 4800000, guid: bb8f232219e0a3a488c321b63e85281f, type: 3}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords: []
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _AlphaTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MaskTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _NormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _EnableExternalAlpha: 0
- _Progress: 0.137
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _Flip: {r: 1, g: 1, b: 1, a: 1}
- _RendererColor: {r: 1, g: 1, b: 1, a: 1}
m_BuildTextureStacks: []
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 2d5f7d9c99f43ce4b8ec277a4ab03080
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:
+64
View File
@@ -0,0 +1,64 @@
Shader "Unlit/CircleProgressBar"
{
Properties
{
_MainTex("Texture", 2D) = "white" {}
_Progress("Progress",Range(0,1)) = 0.5
}
SubShader
{
Tags
{
"RenderType"="Transparent"
}
Blend SrcAlpha OneMinusSrcAlpha
LOD 100
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
struct appdata
{
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
};
struct v2f
{
float2 uv : TEXCOORD0;
float4 vertex : SV_POSITION;
};
sampler2D _MainTex;
float4 _MainTex_ST;
float _Progress;
v2f vert(appdata v)
{
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
o.uv = TRANSFORM_TEX(v.uv, _MainTex);
return o;
}
fixed4 frag(v2f i) : SV_Target
{
float4 col = tex2D(_MainTex, i.uv);
float4 final = step(1 - col.r, _Progress);
float3 ramp = lerp(float3(0, 1, 0), float3(1, 0, 0), _Progress);
final.rgb = final.rgb * ramp;
final.a = col.a;
if (1 - col.r > _Progress)
{
final.a = 0;
}
return final;
}
ENDCG
}
}
}
@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: bb8f232219e0a3a488c321b63e85281f
ShaderImporter:
externalObjects: {}
defaultTextures: []
nonModifiableTextures: []
userData:
assetBundleName:
assetBundleVariant:
+191 -37
View File
@@ -555,6 +555,103 @@ Transform:
m_CorrespondingSourceObject: {fileID: 2309837242789316790, guid: 92aec29b557d59a4ca5363aadd06c7bb, type: 3}
m_PrefabInstance: {fileID: 154381820}
m_PrefabAsset: {fileID: 0}
--- !u!1 &158974636
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 158974637}
- component: {fileID: 158974638}
- component: {fileID: 158974639}
m_Layer: 0
m_Name: "\u6E10\u53D8\u73AF"
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &158974637
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 158974636}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -3.164, y: 2.846, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1112213369}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!212 &158974638
SpriteRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 158974636}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 0
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: 2d5f7d9c99f43ce4b8ec277a4ab03080, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 0
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 1134468525
m_SortingLayer: 10
m_SortingOrder: 5
m_Sprite: {fileID: 3967710112523861117, guid: 64008f2c27d35ac409386015a6bb5887, type: 3}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_FlipX: 0
m_FlipY: 0
m_DrawMode: 0
m_Size: {x: 3.646, y: 2.254}
m_AdaptiveModeThreshold: 0.5
m_SpriteTileMode: 0
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0
--- !u!114 &158974639
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 158974636}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4d9cead340d34293bf0fd9631aede238, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &160015711
GameObject:
m_ObjectHideFlags: 0
@@ -1671,7 +1768,7 @@ Transform:
m_GameObject: {fileID: 463110380}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -7.8, y: 0.406, z: 0}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
@@ -2118,6 +2215,90 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
maxDistance: 0.8
--- !u!1 &535044715
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 535044717}
- component: {fileID: 535044716}
m_Layer: 0
m_Name: "\u8EAB\u4F53\u7EF4\u4FEE\u754C\u9762\u5BFC\u51FA_1227"
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!212 &535044716
SpriteRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 535044715}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 0
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 0
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_Sprite: {fileID: 21300000, guid: d461b69b519107a4c8d7203943963833, type: 3}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_FlipX: 0
m_FlipY: 0
m_DrawMode: 0
m_Size: {x: 38.399998, y: 21.599998}
m_AdaptiveModeThreshold: 0.5
m_SpriteTileMode: 0
m_WasSpriteAssigned: 0
m_MaskInteraction: 0
m_SpriteSortPoint: 0
--- !u!4 &535044717
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 535044715}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 31.557453, y: -1.5650738, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &536896723
GameObject:
m_ObjectHideFlags: 0
@@ -3657,14 +3838,13 @@ GameObject:
serializedVersion: 6
m_Component:
- component: {fileID: 885292092}
- component: {fileID: 885292093}
m_Layer: 0
m_Name: Speed Dashboard
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
m_IsActive: 0
--- !u!4 &885292092
Transform:
m_ObjectHideFlags: 0
@@ -3674,7 +3854,7 @@ Transform:
m_GameObject: {fileID: 885292091}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 5.0550704, y: 0.47555804, z: 0}
m_LocalPosition: {x: -5.199, y: 2.197, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
@@ -3682,20 +3862,6 @@ Transform:
- {fileID: 463110381}
m_Father: {fileID: 1112213369}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &885292093
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 885292091}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 73c497ccb39448718a07911a5e674d5f, type: 3}
m_Name:
m_EditorClassIdentifier:
leftRot: 0
rightRot: 137
--- !u!1 &900787527
GameObject:
m_ObjectHideFlags: 0
@@ -3722,7 +3888,7 @@ Transform:
m_GameObject: {fileID: 900787527}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -7.792, y: 0.406, z: 0}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
@@ -4018,6 +4184,7 @@ Transform:
- {fileID: 885292092}
- {fileID: 5177406695049049041}
- {fileID: 13903366}
- {fileID: 158974637}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &1112213371
@@ -4033,28 +4200,14 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
engineConfig:
oilRate: 0.5
resistance: 0.1
gearSpeed: 0.1
speedRate: 15
targetDuration: 2
pullCount: 5
pullMaxSpeed: 1.2
returnSpeed: 5
engineData:
config:
oilRate: 0
resistance: 0
gearSpeed: 0
speedRate: 0
targetDuration: 0
pullMaxSpeed: 0
returnSpeed: 0
curSpeed: 0
curOil: 0
curAcceleration: 0
isSuccess: 0
reachTargetTime: 0
isAvailable: 0
isPullActive: 0
curSpeed: 0
updateSpeedEvent:
m_PersistentCalls:
m_Calls: []
@@ -12150,7 +12303,7 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 4214753503693131867, guid: 13f00ab6092291d49a9312e52873d80b, type: 3}
propertyPath: m_IsActive
value: 0
value: 1
objectReference: {fileID: 0}
- target: {fileID: 7037918505330246345, guid: 13f00ab6092291d49a9312e52873d80b, type: 3}
propertyPath: field of view
@@ -12263,3 +12416,4 @@ SceneRoots:
- {fileID: 1112213369}
- {fileID: 5393568355081744312}
- {fileID: 9210352354887959608}
- {fileID: 535044717}
@@ -135,6 +135,18 @@ namespace AibisDream
return false;
}
}
/// <summary>
/// 跳到下一句
/// </summary>
public void JumpLine()
{
if (!DialogCanvasManager.GetCurView().TrySkipLine())
{
AudioManager.Instance.StopVoice();
DialogCanvasManager.GetCurView().NextStep();
}
}
#region
-25
View File
@@ -68,30 +68,5 @@ namespace AibisDream
var options = DialogOption.GeneOptions(dialogueOptions, onOptionSelected);
DialogCanvasManager.GetCurView().ShowOptions(options);
}
private void Update()
{
if (Input.GetMouseButtonDown(0) || Input.GetKeyDown(KeyCode.Space))
{
JumpLine();
}
}
/// <summary>
/// 跳到下一句
/// </summary>
private void JumpLine()
{
if (_isInCommand)
{
return;
}
if (!DialogCanvasManager.GetCurView().TrySkipLine())
{
AudioManager.Instance.StopVoice();
DialogCanvasManager.GetCurView().NextStep();
}
}
}
}
@@ -16,7 +16,7 @@ namespace AibisDream.FixSystem
// 初始化状态机
StateMachine = new FixStateMachine();
StartCoroutine(StateMachine.SwitchState(FixState.Clinic));
StartCoroutine(StateMachine.SwitchState(FixState.Engine));
}
public override void OnSingletonDestroy()
@@ -1,5 +1,4 @@
using System;
using AibisDream.FixSystem;
using UnityEngine;
namespace AibisDream.Framework
@@ -47,14 +46,6 @@ namespace AibisDream.Framework
{
public void OnUpdate()
{
if (Input.GetKeyDown(KeyCode.K))
{
MonoCenter.Mono.StartCoroutine(CameraKit.Instance.TransCameraAsync(new Vector3(5f, 5f, -10), 5, 5f));
}
if (Input.GetKeyDown(KeyCode.A))
{
}
}
}
+3 -3
View File
@@ -8,7 +8,8 @@ namespace AibisDream
{
NextYarn,
PlugIn,
PlugOut
PlugOut,
Menu
}
public enum DialogEventEnum
@@ -17,8 +18,7 @@ namespace AibisDream
LineShowed,
LineEnd,
OptionShow,
OptionSelected,
Command
OptionSelected
}
public enum InteractionEventEnum
+10 -16
View File
@@ -34,11 +34,6 @@ namespace AibisDream
_trigger.Register(EventTriggerType.Drag, OnDrag);
}
public float GetCurOil()
{
return Mathf.Abs((transform.localPosition.y - _initPos.y) / maxDistance);
}
private void Update()
{
if (_isDragging)
@@ -58,15 +53,10 @@ namespace AibisDream
// 如果拖拽点在下方,限速移动
else
{
if (Mathf.Abs(_dragPoint.y - transform.position.y) / Time.deltaTime >
_engineSystem.engineConfig.pullMaxSpeed)
{
curY = transform.position.y - _engineSystem.engineConfig.pullMaxSpeed * Time.deltaTime;
}
else
{
curY = _dragPoint.y;
}
curY = _dragPoint.y;
var pullDelta = Mathf.Abs(curY - transform.position.y) / maxDistance;
// 将增量同步给Engine
_engineSystem.AddAirPress(pullDelta);
}
transform.position = new Vector3(transform.position.x, curY, transform.position.y);
@@ -75,7 +65,8 @@ namespace AibisDream
private void OnDrag(BaseEventData data)
{
// 这里是一些阻碍拖动的情况
if (!IsActive) return;
// 正常情况下不会出错
if (data is not PointerEventData pointerData) return;
@@ -85,6 +76,9 @@ namespace AibisDream
private void OnBeginDrag(BaseEventData data)
{
// 这里是一些阻碍拖动的情况
if (!IsActive) return;
// 正常情况下不会出错
if (data is not PointerEventData pointerData) return;
// 设置拖拽目标点
@@ -112,7 +106,7 @@ namespace AibisDream
_dragPoint = new Vector3(transform.position.x, dragY, transform.position.z);
}
public bool IsActive => true;
public bool IsActive => _engineSystem.isPullActive;
public bool IsAvailable => _engineSystem.isAvailable;
+29 -83
View File
@@ -1,8 +1,10 @@
using System;
using System.Collections;
using AibisDream.FixSystem;
using AibisDream.Framework;
using AibisDream.Utility;
using Cinemachine;
using DG.Tweening;
using UnityEngine;
using UnityEngine.Events;
@@ -10,15 +12,15 @@ namespace AibisDream
{
public class EngineSystem : MonoBehaviour
{
private CordPull _cordPull;
private StaticGear _centerGear;
[Header("系统配置")] public EngineConfig engineConfig;
[Header("系统数据")] public EngineData engineData;
public bool isAvailable;
public bool isPullActive;
private bool _isSuccess;
[HideInInspector] public UnityEvent<float> updateSpeedEvent = new();
public float curSpeed;
[HideInInspector] public UnityEvent<float, float> updateSpeedEvent = new();
[SerializeField] private float coverMoveDuration = 5f;
@@ -27,10 +29,9 @@ namespace AibisDream
private void Awake()
{
FixSystemCenter.SystemDic.Register(this);
_cordPull = transform.Find("拉绳").GetComponent<CordPull>();
_centerGear = transform.Find("中央齿轮").GetComponent<StaticGear>();
_centerGear.initSpeed = engineConfig.gearSpeed;
// 注册相机
var virtualCam = transform.Find("Engine Camera").GetComponentInChildren<ICinemachineCamera>();
CameraKit.Instance.RegisterCamera(CameraEnum.Engine, virtualCam);
@@ -38,36 +39,41 @@ namespace AibisDream
private void Start()
{
// 初始化数据
engineData = new EngineData
{
config = engineConfig
};
_centerGear.StartRotate();
}
public IEnumerator StepOnGas(float targetSpeed, float duration)
{
// 逐渐加速
yield return DOTween.To(() => curSpeed, x => { curSpeed = x; }, targetSpeed, duration).WaitForCompletion();
}
public void AddAirPress(float speedDelta)
{
curSpeed = CommonUtil.Limit(curSpeed + speedDelta / engineConfig.pullCount, 1, 0);
}
private void OnDestroy()
{
CameraKit.Instance.UnRegisterCamera(CameraEnum.Engine);
}
public void Update()
private void Update()
{
// 收集数据
engineData.curOil = _cordPull.GetCurOil();
// 更新数据
engineData.CalcSpeed();
// 传递速度
updateSpeedEvent.Invoke(engineData.GetRealSpeed());
if (engineData.CheckSuccess())
updateSpeedEvent.Invoke(curSpeed, GetSpeedScale());
if (curSpeed >= 0.99f && !_isSuccess)
{
Debug.Log("引擎成功");
_isSuccess = true;
isPullActive = false;
DialogController.Instance?.StartDialogNode("EngineSuccess");
}
}
private float GetSpeedScale()
{
return 1 + curSpeed * engineConfig.speedRate;
}
/// <summary>
/// 开启系统交互
/// </summary>
@@ -88,70 +94,10 @@ namespace AibisDream
[Serializable]
public struct EngineConfig
{
[Header("油门倍率")] public float oilRate;
[Header("阻力倍率")] public float resistance;
[Header("齿轮基础速度")] public float gearSpeed;
[Header("齿轮速度倍率")] public float speedRate;
[Header("成功所需时间")] public float targetDuration;
[Header("拉满几次到全速")] public float pullCount;
[Header("拉绳最大速度")] public float pullMaxSpeed;
[Header("拉绳回缩速度")] public float returnSpeed;
}
[Serializable]
public struct EngineData
{
public EngineConfig config;
public float curSpeed;
public float curOil;
public float curAcceleration;
public bool isSuccess;
public float reachTargetTime;
public void CalcSpeed()
{
if (curOil != 0)
{
curAcceleration = curAcceleration < 0 ? 0 : curAcceleration;
curAcceleration = CommonUtil.Limit(curOil * config.oilRate * Time.deltaTime + curAcceleration, 100, 0);
}
else
{
curAcceleration = -config.resistance * (1f + curSpeed);
}
curSpeed = CommonUtil.Limit(curSpeed + curAcceleration * Time.deltaTime, 1, 0);
}
public bool CheckSuccess()
{
// 已经成功就不用校验了
if (isSuccess) return false;
if (curSpeed >= 0.95f)
{
reachTargetTime += Time.deltaTime;
}
else
{
reachTargetTime = 0;
}
// 如果速度达标时间足够就判断成功
if (!(reachTargetTime >= config.targetDuration)) return false;
isSuccess = true;
return true;
}
/// <summary>
/// 获取处理后的速度
/// </summary>
/// <returns>速度</returns>
public float GetRealSpeed()
{
return 1 + curSpeed * config.speedRate;
}
}
}
@@ -1,4 +1,5 @@
using System.Collections;
using AibisDream.FixSystem;
using UnityEngine;
using Yarn.Unity;
@@ -6,6 +7,8 @@ namespace AibisDream
{
public static class EngineYarnCommand
{
private static EngineSystem EngineSystem => FixSystemCenter.SystemDic.Get<EngineSystem>();
// 打开引擎盖
[YarnCommand("open_engine_cover")]
public static IEnumerator OpenEngineCover()
@@ -21,5 +24,26 @@ namespace AibisDream
Debug.LogWarning("关闭引擎盖命令已废弃,请尽快删除");
yield break;
}
/// <summary>
/// 踩油门
/// </summary>
/// <param name="targetSpeed">目标速度</param>
/// <param name="duration">用时</param>
/// <returns>协程</returns>
[YarnCommand("step_on_gas")]
public static IEnumerator StepOnGas(float targetSpeed, float duration)
{
return EngineSystem.StepOnGas(targetSpeed, duration);
}
/// <summary>
/// 激活拉绳
/// </summary>
[YarnCommand("active_engine_pull")]
public static void ActivePull()
{
EngineSystem.isPullActive = true;
}
}
}
@@ -1,25 +1,24 @@
using UnityEngine;
using UnityEngine;
namespace AibisDream
{
public class SpeedDashboard : MonoBehaviour
{
private Transform _pointer;
[SerializeField] private float leftRot;
[SerializeField] private float rightRot;
private Material _material;
private EngineSystem _engineSystem;
private static readonly int Progress1 = Shader.PropertyToID("_Progress");
protected void OnStart()
private void Awake()
{
_pointer = transform.Find("Pointer");
_material = GetComponent<SpriteRenderer>().material;
_engineSystem = transform.parent.GetComponent<EngineSystem>();
_engineSystem.updateSpeedEvent.AddListener(OnSpeedChange);
}
protected void UpdateDashboard(EngineData data)
private void OnSpeedChange(float originSpeed, float speedScale)
{
var targetRot = (rightRot - leftRot) * data.curSpeed + leftRot;
_pointer.eulerAngles = new Vector3(0, 0, -targetRot);
_material.SetFloat(Progress1, originSpeed);
}
}
}
}
@@ -1,11 +1,3 @@
fileFormatVersion: 2
guid: 73c497ccb39448718a07911a5e674d5f
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: 4d9cead340d34293bf0fd9631aede238
timeCreated: 1737626210
+2 -6
View File
@@ -22,12 +22,8 @@ namespace AibisDream
.SetEase(Ease.Linear)
.SetLoops(-1, LoopType.Incremental);
}
/// <summary>
/// 为旋转加速
/// </summary>
/// <param name="speed">速度倍率</param>
private void UpdateSpeedScale(float speed)
private void UpdateSpeedScale(float originSpeed, float speed)
{
_rotateTween.timeScale = speed;
}
@@ -39,6 +39,8 @@ namespace AibisDream
private bool _isTargetReached;
private bool _isDiscReady;
public float initSpeed = 1;
private void Awake()
{
Init();
@@ -65,6 +67,10 @@ namespace AibisDream
var panelShafts = _panel.GetComponentsInChildren<Shaft>();
_shaftGraph = new ShaftGraph(shafts, panelShafts);
var engine = FixSystemCenter.SystemDic.Get<EngineSystem>();
_shaftGraph.StartRotate(initSpeed);
engine.updateSpeedEvent.AddListener(_shaftGraph.Accelerate);
_panel.gameObject.SetActive(false);
}
+1 -8
View File
@@ -23,9 +23,6 @@ namespace AibisDream
[SerializeField] private Gear childGear;
// 初始角速度
[SerializeField] private float initialSpeed;
// 目标角速度
[SerializeField] private float targetSpeed;
@@ -70,8 +67,7 @@ namespace AibisDream
// 如果带齿轮,要根据齿轮类型生成
childGear = InitGear(initRadius, initSprite, isInitGearBroken, isInitGearDisc);
speed = initialSpeed;
childGear.UpdateRotation(speed, _speedScale);
}
@@ -274,7 +270,6 @@ namespace AibisDream
isInitGearBroken = levelData.isGearBroken;
isInitGearDisc = levelData.isDisc;
discIdx = levelData.discIdx;
initialSpeed = levelData.initialSpeed;
targetSpeed = levelData.targetSpeed;
initRadius = levelData.radius;
}
@@ -291,7 +286,6 @@ namespace AibisDream
isGearBroken = isInitGearBroken,
isDisc = isInitGearDisc,
discIdx = discIdx,
initialSpeed = initialSpeed,
targetSpeed = targetSpeed,
radius = initRadius
};
@@ -315,7 +309,6 @@ namespace AibisDream
// 关卡数据
public ShaftType shaftType;
public float initialSpeed;
public float targetSpeed;
public bool hasChildGear;
public float radius;
+18 -12
View File
@@ -43,6 +43,24 @@ namespace AibisDream
UpdateSpeed();
}
/// <summary>
/// 初始化速度
/// </summary>
/// <param name="initSpeed">初始速度</param>
public void StartRotate(float initSpeed)
{
_vertexArray[_rootIdx].speed = initSpeed;
UpdateSpeed();
}
public void Accelerate(float originSpeed, float speed)
{
foreach (var shaft in _vertexArray)
{
if (shaft.HasChildGear()) shaft.UpdateSpeedScale(speed);
}
}
private int FindDriverIdx()
{
for (int i = 0; i < _vertexSize; i++)
@@ -261,17 +279,5 @@ namespace AibisDream
return isShaftAvailable;
}
/// <summary>
/// 通过引擎系统加速
/// </summary>
/// <param name="curSpeed">当前速度</param>
private void Accelerate(float curSpeed)
{
foreach (var shaft in _vertexArray)
{
if (shaft.HasChildGear()) shaft.UpdateSpeedScale(1 + curSpeed);
}
}
}
}
+36 -2
View File
@@ -15,13 +15,13 @@ namespace AibisDream
public Sprite nextTalk, talking, option, interactive, holding, disable, eye;
private Image _cursor;
private RectTransform _cursorCanvas;
#region
private Coroutine _switchCoroutine;
private CursorState _curState = CursorState.Default;
private bool _isTalking;
[HideInInspector] public bool isInMenu;
#endregion
@@ -59,12 +59,18 @@ namespace AibisDream
private void InitRefs()
{
_cursor = transform.Find("Cursor").GetComponent<Image>();
_cursorCanvas = GetComponent<RectTransform>();
}
private void RegisterEvent()
{
// 此处监听所有可能对鼠标状态产生影响的事件
RegisterDialogEvent();
RegisterTriggerEvent();
RegisterMenu();
}
private void RegisterDialogEvent()
{
// 对话相关
_unRegisters.Add(EnumEventSystem.Global.Register<DialogEventEnum, DialogLine>(DialogEventEnum.LineStart,
OnLineStart));
@@ -74,7 +80,10 @@ namespace AibisDream
_unRegisters.Add(
EnumEventSystem.Global.Register<DialogEventEnum, DialogLine>(DialogEventEnum.OptionSelected,
OnOptionSelect));
}
private void RegisterTriggerEvent()
{
// 交互相关
_unRegisters.Add(EnumEventSystem.Global.Register(InteractionEventEnum.Start, OnInteractiveStart));
_unRegisters.Add(EnumEventSystem.Global.Register(InteractionEventEnum.End, OnInteractiveEnd));
@@ -89,6 +98,22 @@ namespace AibisDream
EnumEventSystem.Global.Register<TriggerEnum, IInteraction>(TriggerEnum.PointerUp, OnPointerUp));
}
private void RegisterMenu()
{
_unRegisters.Add(EnumEventSystem.Global.Register<EventEnum, bool>(EventEnum.Menu, OnMenuChange));
}
private void Update()
{
if (Input.GetMouseButtonDown(0) || Input.GetKeyDown(KeyCode.Space))
{
if (_isTalking && !isInMenu)
{
DialogController.Instance.JumpLine();
}
}
}
private void LateUpdate()
{
// // 将虚拟指针与鼠标位置同步
@@ -190,6 +215,15 @@ namespace AibisDream
#endregion
#region
private void OnMenuChange(bool isMenuOpen)
{
isInMenu = isMenuOpen;
}
#endregion
#region
/// <summary>
@@ -162,6 +162,7 @@ namespace AibisDream
{
var logObj = transform.Find("Dialogue Log").gameObject;
logObj.SetActive(!logObj.activeSelf);
EnumEventSystem.Global.Send(EventEnum.Menu, logObj.activeSelf);
}
#endregion