Compare commits

..

22 Commits

Author SHA1 Message Date
trey 9dfcee6159 add doug to island scene, fix textures 2026-05-18 21:40:53 -05:00
Dylon 9db5d65278 added block out island 2026-05-18 20:42:39 -05:00
trey 9948d82dc7 dithering, close cam, rain 2026-05-17 21:23:31 -05:00
trey 0e652c6cc0 save scene 2026-05-14 21:58:44 -05:00
trey 7259fe8d67 remove ortho, fix zoom, add dithering 2026-05-14 21:58:23 -05:00
trey 8fef9c25d7 free rotate camera 2026-05-13 21:01:50 -05:00
trey aee3fe9ea7 add volume mixer 2026-05-06 18:44:52 -05:00
trey b414bd391c minor scene cleanup 2026-05-05 21:02:06 -05:00
trey 343a27936c organize scripts 2026-05-05 21:01:16 -05:00
trey f4be1941d3 add map menu 2026-05-05 20:59:36 -05:00
trey a689d76de7 better pause menu system 2026-05-03 12:19:08 -05:00
trey 9ba1ff4a1f started sound settings menu, still in progress 2026-04-24 22:13:53 -05:00
trey 8dd61407cd fade to correct scene when current scene doesn't match save file on load 2026-04-17 21:21:42 -05:00
trey db47bc3768 save position and cam rotation 2026-04-15 21:33:36 -05:00
trey 46ec37309d add pause menu 2026-04-15 20:47:08 -05:00
trey 77625e7ad5 fix quest bug checking wrong conditions 2026-04-11 22:04:39 -05:00
trey 54db4e4b73 add doug to dialogue, start grandma quest 2026-04-11 18:34:16 -05:00
trey 6491a3df11 tnt graphics, bug fixes, folder organization 2026-03-28 20:47:10 -05:00
trey 57b14d4ba9 add throwable hand 2026-03-27 15:57:01 -05:00
trey 6e22731e50 fix lookat camera 2026-03-26 21:39:17 -05:00
trey 1e0ea14ae2 save tool between scenes and in save file 2026-03-25 18:46:07 -05:00
trey 40af32939e tool system with switching 2026-03-25 17:58:18 -05:00
109 changed files with 29691 additions and 9098 deletions
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 4ed5850fb66a3fa4f85c608105dc712d
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+144
View File
@@ -0,0 +1,144 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!243 &-5985036292871575848
AudioMixerGroupController:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Music
m_AudioMixer: {fileID: 24100000}
m_GroupID: 5bdfe230200494b4dba2d07588c7c60d
m_Children: []
m_Volume: 831694893cecc104e83cd13eec93d28c
m_Pitch: 5aeb6a175f195024a87861062e2ec1b0
m_Send: 00000000000000000000000000000000
m_Effects:
- {fileID: -5067953075322291121}
m_UserColorIndex: 0
m_Mute: 0
m_Solo: 0
m_BypassEffects: 0
--- !u!244 &-5067953075322291121
AudioMixerEffectController:
m_ObjectHideFlags: 3
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_EffectID: 87ce651d7c89cfa44afcecbb0fff4abd
m_EffectName: Attenuation
m_MixLevel: df4b34f13069a454cb0de1361d5c4099
m_Parameters: []
m_SendTarget: {fileID: 0}
m_EnableWetMix: 0
m_Bypass: 0
--- !u!241 &24100000
AudioMixerController:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: AudioMixer
m_OutputGroup: {fileID: 0}
m_MasterGroup: {fileID: 24300002}
m_Snapshots:
- {fileID: 24500006}
m_StartSnapshot: {fileID: 24500006}
m_SuspendThreshold: -80
m_EnableSuspend: 1
m_UpdateMode: 0
m_ExposedParameters:
- guid: 8e54073feec66d24c8b5b5321b86da6f
name: MasterVolume
- guid: 831694893cecc104e83cd13eec93d28c
name: MusicVolume
- guid: 97cc39ce50c2b85439b8361ceae3f4c6
name: SFXVolume
m_AudioMixerGroupViews:
- guids:
- 1647cf21931ffb4409abd5f86b5ba22b
- 5bdfe230200494b4dba2d07588c7c60d
- 306f67f3e059d2c4aaaef306930b737e
name: View
m_CurrentViewIndex: 0
m_TargetSnapshot: {fileID: 24500006}
--- !u!243 &24300002
AudioMixerGroupController:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Master
m_AudioMixer: {fileID: 24100000}
m_GroupID: 1647cf21931ffb4409abd5f86b5ba22b
m_Children:
- {fileID: -5985036292871575848}
- {fileID: 3079392121493439853}
m_Volume: 8e54073feec66d24c8b5b5321b86da6f
m_Pitch: f023bc3b372a9df469e34b83fc9efc66
m_Send: 00000000000000000000000000000000
m_Effects:
- {fileID: 24400004}
m_UserColorIndex: 0
m_Mute: 0
m_Solo: 0
m_BypassEffects: 0
--- !u!244 &24400004
AudioMixerEffectController:
m_ObjectHideFlags: 3
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_EffectID: bdd917cc2a7b59c45a66df37be3e3489
m_EffectName: Attenuation
m_MixLevel: c9d36b6a18286a8449cc204da4cc3140
m_Parameters: []
m_SendTarget: {fileID: 0}
m_EnableWetMix: 0
m_Bypass: 0
--- !u!245 &24500006
AudioMixerSnapshotController:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Snapshot
m_AudioMixer: {fileID: 24100000}
m_SnapshotID: 8474d9129ecb5954ea867453e7561687
m_FloatValues: {}
m_TransitionOverrides: {}
--- !u!243 &3079392121493439853
AudioMixerGroupController:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: SFX
m_AudioMixer: {fileID: 24100000}
m_GroupID: 306f67f3e059d2c4aaaef306930b737e
m_Children: []
m_Volume: 97cc39ce50c2b85439b8361ceae3f4c6
m_Pitch: 9119b1dfcb88e4e4c917090c57fa1680
m_Send: 00000000000000000000000000000000
m_Effects:
- {fileID: 5127884578886668124}
m_UserColorIndex: 0
m_Mute: 0
m_Solo: 0
m_BypassEffects: 0
--- !u!244 &5127884578886668124
AudioMixerEffectController:
m_ObjectHideFlags: 3
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name:
m_EffectID: 0f75e42fe6e091c4ca36a6aa676fff0f
m_EffectName: Attenuation
m_MixLevel: 45c4e84286ed5a345b779472c0df9874
m_Parameters: []
m_SendTarget: {fileID: 0}
m_EnableWetMix: 0
m_Bypass: 0
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 3490106d3e6edc143b9179d3107780dd
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 24100000
userData:
assetBundleName:
assetBundleVariant:
+15
View File
@@ -0,0 +1,15 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!134 &13400000
PhysicsMaterial:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: BouncyBall
serializedVersion: 2
m_DynamicFriction: 0.6
m_StaticFriction: 0.6
m_Bounciness: 1
m_FrictionCombine: 0
m_BounceCombine: 0
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: e11a0c91449cb044686c17715bd96f92
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 13400000
userData:
assetBundleName:
assetBundleVariant:
+190
View File
@@ -0,0 +1,190 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &4309010032443068981
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7306326942743672910}
- component: {fileID: 1001616692551291424}
- component: {fileID: 8608724141738220055}
- component: {fileID: 5427514152406774277}
m_Layer: 5
m_Name: Canvas
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &7306326942743672910
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4309010032443068981}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0, y: 0, z: 0}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 2225573246702167059}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0, y: 0}
--- !u!223 &1001616692551291424
Canvas:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4309010032443068981}
m_Enabled: 1
serializedVersion: 3
m_RenderMode: 0
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 &8608724141738220055
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4309010032443068981}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3}
m_Name:
m_EditorClassIdentifier:
m_UiScaleMode: 1
m_ReferencePixelsPerUnit: 100
m_ScaleFactor: 1
m_ReferenceResolution: {x: 1920, y: 1080}
m_ScreenMatchMode: 1
m_MatchWidthOrHeight: 0.5
m_PhysicalUnit: 3
m_FallbackScreenDPI: 96
m_DefaultSpriteDPI: 96
m_DynamicPixelsPerUnit: 1
m_PresetInfoIsWorld: 0
--- !u!114 &5427514152406774277
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4309010032443068981}
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!1001 &4657271629088206950
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 7306326942743672910}
m_Modifications:
- target: {fileID: 818899427131401759, guid: 6d1ef2b53d3ef0446852da522af66b73, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1376587328550839904, guid: 6d1ef2b53d3ef0446852da522af66b73, type: 3}
propertyPath: m_Name
value: UI
objectReference: {fileID: 0}
- target: {fileID: 2975696880262954876, guid: 6d1ef2b53d3ef0446852da522af66b73, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 4264548731807291060, guid: 6d1ef2b53d3ef0446852da522af66b73, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5101319162034548862, guid: 6d1ef2b53d3ef0446852da522af66b73, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5514935285560916770, guid: 6d1ef2b53d3ef0446852da522af66b73, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6792308726050395253, guid: 6d1ef2b53d3ef0446852da522af66b73, type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6792308726050395253, guid: 6d1ef2b53d3ef0446852da522af66b73, type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6792308726050395253, guid: 6d1ef2b53d3ef0446852da522af66b73, type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6792308726050395253, guid: 6d1ef2b53d3ef0446852da522af66b73, type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 6792308726050395253, guid: 6d1ef2b53d3ef0446852da522af66b73, type: 3}
propertyPath: m_LocalRotation.x
value: -0
objectReference: {fileID: 0}
- target: {fileID: 6792308726050395253, guid: 6d1ef2b53d3ef0446852da522af66b73, type: 3}
propertyPath: m_LocalRotation.y
value: -0
objectReference: {fileID: 0}
- target: {fileID: 6792308726050395253, guid: 6d1ef2b53d3ef0446852da522af66b73, type: 3}
propertyPath: m_LocalRotation.z
value: -0
objectReference: {fileID: 0}
- target: {fileID: 6792308726050395253, guid: 6d1ef2b53d3ef0446852da522af66b73, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6792308726050395253, guid: 6d1ef2b53d3ef0446852da522af66b73, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 6792308726050395253, guid: 6d1ef2b53d3ef0446852da522af66b73, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7535213278904715570, guid: 6d1ef2b53d3ef0446852da522af66b73, type: 3}
propertyPath: m_AnchorMax.y
value: 0
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 6d1ef2b53d3ef0446852da522af66b73, type: 3}
--- !u!4 &2225573246702167059 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 6792308726050395253, guid: 6d1ef2b53d3ef0446852da522af66b73, type: 3}
m_PrefabInstance: {fileID: 4657271629088206950}
m_PrefabAsset: {fileID: 0}
+7
View File
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: bbc6f24d8835c954e9ac0321983d48f7
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+50
View File
@@ -0,0 +1,50 @@
using UnityEngine;
public static class DebugUtilities
{
/// <summary>
/// Draws a wire sphere using Debug.DrawLine for runtime visibility.
/// </summary>
public static void DrawWireSphere(Vector3 center, float radius, Color color, float duration, int quality = 3)
{
quality = Mathf.Clamp(quality, 1, 10);
int segments = quality << 2;
int subdivisions = quality << 3;
int halfSegments = segments >> 1;
float strideAngle = 360f / subdivisions;
float segmentStride = 180f / segments;
Vector3 first;
Vector3 next;
// Draw meridians (vertical circles)
for (int i = 0; i < segments; i++)
{
first = (Vector3.forward * radius);
first = Quaternion.AngleAxis(segmentStride * (i - halfSegments), Vector3.right) * first;
for (int j = 0; j < subdivisions; j++)
{
next = Quaternion.AngleAxis(strideAngle, Vector3.up) * first;
Debug.DrawLine(first + center, next + center, color, duration);
first = next;
}
}
// Draw parallels (horizontal circles)
Vector3 axis;
for (int i = 0; i < segments; i++)
{
first = (Vector3.forward * radius);
first = Quaternion.AngleAxis(segmentStride * (i - halfSegments), Vector3.up) * first;
axis = Quaternion.AngleAxis(90f, Vector3.up) * first;
for (int j = 0; j < subdivisions; j++)
{
next = Quaternion.AngleAxis(strideAngle, axis) * first;
Debug.DrawLine(first + center, next + center, color, duration);
first = next;
}
}
}
}
+2
View File
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 933aa2a82d546964cb7e1a8e7a1e007f
+2653 -24
View File
File diff suppressed because it is too large Load Diff
+576
View File
@@ -0,0 +1,576 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &2847588586743557754
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3234985867044947891}
- component: {fileID: 2327288061446170596}
- component: {fileID: 6609718028819421532}
- component: {fileID: 4920865001359101263}
- component: {fileID: 1290228147892549875}
m_Layer: 0
m_Name: DialogVoiceSources
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &3234985867044947891
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2847588586743557754}
serializedVersion: 2
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: 5519027142145697695}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!82 &2327288061446170596
AudioSource:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2847588586743557754}
m_Enabled: 1
serializedVersion: 4
OutputAudioMixerGroup: {fileID: 0}
m_audioClip: {fileID: 0}
m_Resource: {fileID: 0}
m_PlayOnAwake: 1
m_Volume: 1
m_Pitch: 1
Loop: 0
Mute: 0
Spatialize: 0
SpatializePostEffects: 0
Priority: 128
DopplerLevel: 1
MinDistance: 1
MaxDistance: 500
Pan2D: 0
rolloffMode: 0
BypassEffects: 0
BypassListenerEffects: 0
BypassReverbZones: 0
rolloffCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 1
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
panLevelCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
spreadCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
reverbZoneMixCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
--- !u!82 &6609718028819421532
AudioSource:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2847588586743557754}
m_Enabled: 1
serializedVersion: 4
OutputAudioMixerGroup: {fileID: 0}
m_audioClip: {fileID: 0}
m_Resource: {fileID: 0}
m_PlayOnAwake: 1
m_Volume: 1
m_Pitch: 1
Loop: 0
Mute: 0
Spatialize: 0
SpatializePostEffects: 0
Priority: 128
DopplerLevel: 1
MinDistance: 1
MaxDistance: 500
Pan2D: 0
rolloffMode: 0
BypassEffects: 0
BypassListenerEffects: 0
BypassReverbZones: 0
rolloffCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 1
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
panLevelCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
spreadCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
reverbZoneMixCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
--- !u!82 &4920865001359101263
AudioSource:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2847588586743557754}
m_Enabled: 1
serializedVersion: 4
OutputAudioMixerGroup: {fileID: 0}
m_audioClip: {fileID: 0}
m_Resource: {fileID: 0}
m_PlayOnAwake: 1
m_Volume: 1
m_Pitch: 1
Loop: 0
Mute: 0
Spatialize: 0
SpatializePostEffects: 0
Priority: 128
DopplerLevel: 1
MinDistance: 1
MaxDistance: 500
Pan2D: 0
rolloffMode: 0
BypassEffects: 0
BypassListenerEffects: 0
BypassReverbZones: 0
rolloffCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 1
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
panLevelCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
spreadCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
reverbZoneMixCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
--- !u!82 &1290228147892549875
AudioSource:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2847588586743557754}
m_Enabled: 1
serializedVersion: 4
OutputAudioMixerGroup: {fileID: 0}
m_audioClip: {fileID: 0}
m_Resource: {fileID: 0}
m_PlayOnAwake: 1
m_Volume: 1
m_Pitch: 1
Loop: 0
Mute: 0
Spatialize: 0
SpatializePostEffects: 0
Priority: 128
DopplerLevel: 1
MinDistance: 1
MaxDistance: 500
Pan2D: 0
rolloffMode: 0
BypassEffects: 0
BypassListenerEffects: 0
BypassReverbZones: 0
rolloffCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
- serializedVersion: 3
time: 1
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
panLevelCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
spreadCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 0
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
reverbZoneMixCustomCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
value: 1
inSlope: 0
outSlope: 0
tangentMode: 0
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
--- !u!1 &8685480739473632986
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 5519027142145697695}
- component: {fileID: 7627266791993751843}
- component: {fileID: 1126747780593280214}
- component: {fileID: 6896780435732746551}
- component: {fileID: 7681847596368765025}
- component: {fileID: 4444498079052879519}
- component: {fileID: 5173819118098093347}
- component: {fileID: 1410439939888368689}
m_Layer: 0
m_Name: GameManager
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &5519027142145697695
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8685480739473632986}
serializedVersion: 2
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:
- {fileID: 3234985867044947891}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &7627266791993751843
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8685480739473632986}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 65dc1a5d5b17b874087eb45227f838f2, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!114 &1126747780593280214
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8685480739473632986}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 9741c059777b7a74681122aa761e2dee, type: 3}
m_Name:
m_EditorClassIdentifier:
nameText: {fileID: 0}
dialogueText: {fileID: 0}
itemText: {fileID: 0}
pickupHint: {fileID: 0}
animator: {fileID: 0}
--- !u!114 &6896780435732746551
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8685480739473632986}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: cf9658f7202522245b3ac80235b98b50, type: 3}
m_Name:
m_EditorClassIdentifier:
CompletedQuests:
ActiveQuests:
--- !u!114 &7681847596368765025
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8685480739473632986}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 1b892c02d92dd70419f61cf0ae34b9d8, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::TimeManager
currentHour: 12
--- !u!114 &4444498079052879519
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8685480739473632986}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 40e5d5183cb59cf4d8603dca70c1a9b5, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::Inventory
itemSlots:
- quantity: 0
item: 0
- quantity: 0
item: 0
- quantity: 0
item: 0
- quantity: 0
item: 0
- quantity: 0
item: 0
- quantity: 0
item: 0
- quantity: 0
item: 0
- quantity: 0
item: 0
ownedBackpackType: 0
--- !u!114 &5173819118098093347
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8685480739473632986}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f9c9dde58f68b5e4d9fc0036b990c481, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::PlayerManager
CurrentToolIndex: 0
--- !u!114 &1410439939888368689
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8685480739473632986}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: ab14394efecbd6540af369ced75e81d0, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::SoundSettingManager
audioMixer: {fileID: 24100000, guid: 3490106d3e6edc143b9179d3107780dd, type: 2}
+7
View File
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 9f59bbee72927d649b032622c1c0f2f5
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+137
View File
@@ -0,0 +1,137 @@
%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: Island_Temp_Shader
m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, 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:
RenderType: Opaque
disabledShaderPasses:
- MOTIONVECTORS
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BaseMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
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}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _SpecGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- unity_Lightmaps:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- unity_LightmapsInd:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- unity_ShadowMasks:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _AddPrecomputedVelocity: 0
- _AlphaClip: 0
- _AlphaToMask: 0
- _Blend: 0
- _BlendModePreserveSpecular: 1
- _BumpScale: 1
- _ClearCoatMask: 0
- _ClearCoatSmoothness: 0
- _Cull: 2
- _Cutoff: 0.5
- _DetailAlbedoMapScale: 1
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _DstBlendAlpha: 0
- _EnvironmentReflections: 1
- _GlossMapScale: 0
- _Glossiness: 0
- _GlossyReflections: 0
- _Metallic: 0
- _OcclusionStrength: 1
- _Parallax: 0.005
- _QueueOffset: 0
- _ReceiveShadows: 1
- _Smoothness: 0
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _SrcBlendAlpha: 1
- _Surface: 0
- _WorkflowMode: 1
- _XRMotionVectorsPass: 1
- _ZWrite: 1
m_Colors:
- _BaseColor: {r: 0.6226415, g: 0.56533194, b: 0.502225, a: 1}
- _Color: {r: 0.62264144, g: 0.5653319, b: 0.5022249, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}
m_BuildTextureStacks: []
m_AllowLocking: 1
--- !u!114 &4647237875860341337
MonoBehaviour:
m_ObjectHideFlags: 11
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
m_Name:
m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Editor::UnityEditor.Rendering.Universal.AssetVersion
version: 10
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: b74fa76d3c3551d478f93b2a251df8f8
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.
+110
View File
@@ -0,0 +1,110 @@
fileFormatVersion: 2
guid: 5d4389ebffbf7bd458488fd3ea3fc492
ModelImporter:
serializedVersion: 24200
internalIDToNameTable: []
externalObjects: {}
materials:
materialImportMode: 2
materialName: 0
materialSearch: 1
materialLocation: 1
animations:
legacyGenerateAnimations: 4
bakeSimulation: 0
resampleCurves: 1
optimizeGameObjects: 0
removeConstantScaleCurves: 0
motionNodeName:
animationImportErrors:
animationImportWarnings:
animationRetargetingWarnings:
animationDoRetargetingWarnings: 0
importAnimatedCustomProperties: 0
importConstraints: 0
animationCompression: 1
animationRotationError: 0.5
animationPositionError: 0.5
animationScaleError: 0.5
animationWrapMode: 0
extraExposedTransformPaths: []
extraUserProperties: []
clipAnimations: []
isReadable: 0
meshes:
lODScreenPercentages: []
globalScale: 1
meshCompression: 0
addColliders: 0
useSRGBMaterialColor: 1
sortHierarchyByName: 1
importPhysicalCameras: 1
importVisibility: 1
importBlendShapes: 1
importCameras: 1
importLights: 1
nodeNameCollisionStrategy: 1
fileIdsGeneration: 2
swapUVChannels: 0
generateSecondaryUV: 0
useFileUnits: 1
keepQuads: 0
weldVertices: 1
bakeAxisConversion: 0
preserveHierarchy: 0
skinWeightsMode: 0
maxBonesPerVertex: 4
minBoneWeight: 0.001
optimizeBones: 1
generateMeshLods: 0
meshLodGenerationFlags: 0
maximumMeshLod: -1
meshOptimizationFlags: -1
indexFormat: 0
secondaryUVAngleDistortion: 8
secondaryUVAreaDistortion: 15.000001
secondaryUVHardAngle: 88
secondaryUVMarginMethod: 1
secondaryUVMinLightmapResolution: 40
secondaryUVMinObjectScale: 1
secondaryUVPackMargin: 4
useFileScale: 1
strictVertexDataChecks: 0
tangentSpace:
normalSmoothAngle: 60
normalImportMode: 0
tangentImportMode: 3
normalCalculationMode: 4
legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
blendShapeNormalImportMode: 1
normalSmoothingSource: 0
referencedClips: []
importAnimation: 1
humanDescription:
serializedVersion: 3
human: []
skeleton: []
armTwist: 0.5
foreArmTwist: 0.5
upperLegTwist: 0.5
legTwist: 0.5
armStretch: 0.05
legStretch: 0.05
feetSpacing: 0
globalScale: 1
rootMotionBoneName:
hasTranslationDoF: 0
hasExtraRoot: 0
skeletonHasParents: 1
lastHumanDescriptionAvatarSource: {instanceID: 0}
autoGenerateAvatarMappingIfUnspecified: 1
animationType: 2
humanoidOversampling: 1
avatarSetup: 0
addHumanoidExtraRootOnlyWhenUsingAvatar: 1
importBlendShapeDeformPercent: 1
remapMaterialsIfMaterialImportModeIsNone: 0
additionalBone: 0
userData:
assetBundleName:
assetBundleVariant:
File diff suppressed because it is too large Load Diff
+7
View File
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: ea8f36f5e928823469cf3d0ebc62afc7
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: eaa54bb6b383cee45b061dbca1a69945
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -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: ParticlesUnlit Variant
m_Shader: {fileID: 4800000, guid: 0406db5a14f94604a8c57ccfbc9f3b46, type: 3}
m_Parent: {fileID: 2100000, guid: e823cd5b5d27c0f4b8256e7c12ee3e6d, type: 2}
m_ModifiedSerializedProperties: 0
m_ValidKeywords:
- _SURFACE_TYPE_TRANSPARENT
m_InvalidKeywords:
- _FLIPBOOKBLENDING_OFF
- _RECEIVE_SHADOWS_OFF
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap:
RenderType: Transparent
disabledShaderPasses:
- ALWAYS
- SHADOWCASTER
- DepthOnly
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs: []
m_Ints: []
m_Floats: []
m_Colors: []
m_BuildTextureStacks: []
m_AllowLocking: 1
--- !u!114 &3897461806608698219
MonoBehaviour:
m_ObjectHideFlags: 11
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
m_Name:
m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Editor::UnityEditor.Rendering.Universal.AssetVersion
version: 10
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 64ca3a2884aa8954cb1fb6d2ce25a60c
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:
+39
View File
@@ -0,0 +1,39 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!84 &8400000
RenderTexture:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: MiniMapRenderTexture
m_ImageContentsHash:
serializedVersion: 2
Hash: 00000000000000000000000000000000
m_IsAlphaChannelOptional: 0
serializedVersion: 6
m_Width: 256
m_Height: 256
m_AntiAliasing: 1
m_MipCount: -1
m_DepthStencilFormat: 90
m_ColorFormat: 4
m_MipMap: 1
m_GenerateMips: 1
m_SRGB: 1
m_UseDynamicScale: 0
m_UseDynamicScaleExplicit: 0
m_BindMS: 0
m_EnableCompatibleFormat: 1
m_EnableRandomWrite: 0
m_TextureSettings:
serializedVersion: 2
m_FilterMode: 1
m_Aniso: 0
m_MipBias: 0
m_WrapU: 1
m_WrapV: 1
m_WrapW: 1
m_Dimension: 2
m_VolumeDepth: 1
m_ShadowSamplingMode: 2
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 93d78654fc891634d9bbf8c77c58e435
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 8400000
userData:
assetBundleName:
assetBundleVariant:
+141
View File
@@ -0,0 +1,141 @@
%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: OccludeTest
m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords:
- _ALPHAPREMULTIPLY_ON
- _SURFACE_TYPE_TRANSPARENT
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: 3000
stringTagMap:
RenderType: Transparent
disabledShaderPasses:
- MOTIONVECTORS
- DepthOnly
- SHADOWCASTER
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BaseMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
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}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _SpecGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- unity_Lightmaps:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- unity_LightmapsInd:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- unity_ShadowMasks:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _AddPrecomputedVelocity: 0
- _AlphaClip: 0
- _AlphaToMask: 0
- _Blend: 0
- _BlendModePreserveSpecular: 1
- _BumpScale: 1
- _ClearCoatMask: 0
- _ClearCoatSmoothness: 0
- _Cull: 2
- _Cutoff: 0.5
- _DetailAlbedoMapScale: 1
- _DetailNormalMapScale: 1
- _DstBlend: 10
- _DstBlendAlpha: 10
- _EnvironmentReflections: 1
- _GlossMapScale: 0
- _Glossiness: 0
- _GlossyReflections: 0
- _Metallic: 0
- _OcclusionStrength: 1
- _Parallax: 0.005
- _QueueOffset: 0
- _ReceiveShadows: 1
- _Smoothness: 0.5
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _SrcBlendAlpha: 1
- _Surface: 1
- _WorkflowMode: 1
- _XRMotionVectorsPass: 1
- _ZWrite: 0
m_Colors:
- _BaseColor: {r: 0.509434, g: 0.509434, b: 0.509434, a: 1}
- _Color: {r: 0.509434, g: 0.509434, b: 0.509434, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}
m_BuildTextureStacks: []
m_AllowLocking: 1
--- !u!114 &3531991361068812674
MonoBehaviour:
m_ObjectHideFlags: 11
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
m_Name:
m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Editor::UnityEditor.Rendering.Universal.AssetVersion
version: 10
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 78be8f8bd251f244ab82d30f189c8824
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:
+142
View File
@@ -0,0 +1,142 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &7664016258760507437
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1726613362671065430}
- component: {fileID: 1753263962729783047}
- component: {fileID: 6205312924763433350}
- component: {fileID: 7350486210546925347}
- component: {fileID: 2968305615973019778}
m_Layer: 0
m_Name: RubberBall
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1726613362671065430
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7664016258760507437}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -1.327, y: 3.81, z: -2.626}
m_LocalScale: {x: 0.089599, y: 0.089599, z: 0.089599}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &1753263962729783047
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7664016258760507437}
m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &6205312924763433350
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7664016258760507437}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_SmallMeshCulling: 1
m_ForceMeshLod: -1
m_MeshLodSelectionBias: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, 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: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_GlobalIlluminationMeshLod: 0
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_MaskInteraction: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!135 &7350486210546925347
SphereCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7664016258760507437}
m_Material: {fileID: 13400000, guid: e11a0c91449cb044686c17715bd96f92, type: 2}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_IsTrigger: 0
m_ProvidesContacts: 0
m_Enabled: 1
serializedVersion: 3
m_Radius: 0.5
m_Center: {x: 0, y: 0, z: 0}
--- !u!54 &2968305615973019778
Rigidbody:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7664016258760507437}
serializedVersion: 5
m_Mass: 1
m_LinearDamping: 0
m_AngularDamping: 0.05
m_CenterOfMass: {x: 0, y: 0, z: 0}
m_InertiaTensor: {x: 1, y: 1, z: 1}
m_InertiaRotation: {x: 0, y: 0, z: 0, w: 1}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_ImplicitCom: 1
m_ImplicitTensor: 1
m_UseGravity: 1
m_IsKinematic: 0
m_Interpolate: 0
m_Constraints: 0
m_CollisionDetection: 0
+7
View File
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 0b0365667a94c474bb3cc42312aac1db
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
-53
View File
@@ -1,53 +0,0 @@
using System.Collections.Generic;
using System.Linq;
using Unity.VisualScripting;
using UnityEngine;
public class CameraController : MonoBehaviour
{
private float camTargetRotation = 0;
private bool isCamRotating = false;
public Transform playerCamHome;
private void Update()
{
HandleCamRotation();
}
/// <summary>
/// Trigger cam rotation
/// </summary>
public void RotateCam()
{
if (!isCamRotating)
{
float currentY = playerCamHome.transform.rotation.eulerAngles.y;
camTargetRotation = currentY + 90f;
isCamRotating = true;
}
}
/// <summary>
/// Move cam to desired rotation (every frame)
/// </summary>
void HandleCamRotation()
{
float currentY = playerCamHome.transform.rotation.eulerAngles.y;
float step = 200 * Time.deltaTime;
float newY = Mathf.MoveTowardsAngle(currentY, camTargetRotation, step);
playerCamHome.RotateAround(
transform.position,
Vector3.up,
newY - currentY
);
if (Mathf.Abs(Mathf.DeltaAngle(newY, camTargetRotation)) < 0.01f)
{
isCamRotating = false;
}
}
}
+11 -2
View File
@@ -6,6 +6,15 @@ public class Dialogue
public string charName; public string charName;
public bool isActive = false; public bool isActive = false;
[TextArea(3,10)] public DialogueLine[] sentences;
public string[] sentences; }
[System.Serializable]
public class DialogueLine
{
// is Doug or the character talking? Let's convo have 2 sides
public bool isDoug;
[TextArea(3, 10)]
public string line;
} }
+24 -8
View File
@@ -5,7 +5,7 @@
public class DialogueManager : MonoBehaviour public class DialogueManager : MonoBehaviour
{ {
private Queue<string> sentences; private Queue<DialogueLine> sentences;
private Dialogue currentDialogue; private Dialogue currentDialogue;
private DialogueVoice currentDialogueVoice; private DialogueVoice currentDialogueVoice;
private float maxDialogueWaitTime = 1.0f; private float maxDialogueWaitTime = 1.0f;
@@ -25,7 +25,7 @@ public class DialogueManager : MonoBehaviour
// Start is called once before the first execution of Update after the MonoBehaviour is created // Start is called once before the first execution of Update after the MonoBehaviour is created
void Start() void Start()
{ {
sentences = new Queue<string>(); sentences = new Queue<DialogueLine>();
voiceSourcePool = GetComponentsInChildren<AudioSource>(); voiceSourcePool = GetComponentsInChildren<AudioSource>();
} }
@@ -45,9 +45,8 @@ public void StartDialogue(Dialogue dialogue, DialogueVoice dialogueVoice)
sentences.Clear(); sentences.Clear();
currentDialogue = dialogue; currentDialogue = dialogue;
currentDialogueVoice = dialogueVoice; currentDialogueVoice = dialogueVoice;
nameText.text = dialogue.charName;
foreach (string sentence in dialogue.sentences) foreach (DialogueLine sentence in dialogue.sentences)
{ {
sentences.Enqueue(sentence); sentences.Enqueue(sentence);
} }
@@ -64,7 +63,7 @@ public void DisplayNextSentence()
return; return;
} }
string sentence = sentences.Dequeue(); DialogueLine sentence = sentences.Dequeue();
StopAllCoroutines(); StopAllCoroutines();
StopVoices(); StopVoices();
StartCoroutine(TypeSentence(sentence)); StartCoroutine(TypeSentence(sentence));
@@ -82,14 +81,31 @@ public void EndDialogue()
} }
} }
IEnumerator TypeSentence(string sentence) IEnumerator TypeSentence(DialogueLine sentence)
{ {
dialogueText.text = ""; dialogueText.text = "";
char[] sentenceCharArray = sentence.ToCharArray();
if (sentence.isDoug)
{
nameText.text = "Doug";
}
else
{
nameText.text = currentDialogue.charName;
}
char[] sentenceCharArray = sentence.line.ToCharArray();
for (int i = 0; i < sentenceCharArray.Length; i++) for (int i = 0; i < sentenceCharArray.Length; i++)
{ {
dialogueText.text += sentenceCharArray[i]; dialogueText.text += sentenceCharArray[i];
if (sentence.isDoug)
{
// TODO: Add Doug voice
yield return new WaitForSeconds(0.03f);
}
else
{
if (currentDialogueVoice != null && currentDialogueVoice.voice != Voices.None) if (currentDialogueVoice != null && currentDialogueVoice.voice != Voices.None)
{ {
if (i % currentDialogueVoice.speechInterval == 0) if (i % currentDialogueVoice.speechInterval == 0)
@@ -109,7 +125,7 @@ IEnumerator TypeSentence(string sentence)
// TODO: Add speed variable to non-voices (Talkable.cs) // TODO: Add speed variable to non-voices (Talkable.cs)
yield return new WaitForSeconds(0.03f); yield return new WaitForSeconds(0.03f);
} }
}
} }
} }
@@ -0,0 +1,352 @@
using System.Collections.Generic;
using System.Linq;
using Unity.VisualScripting;
using UnityEngine;
using UnityEngine.UIElements;
using static Unity.Cinemachine.CinemachineTargetGroup;
using static UnityEngine.GraphicsBuffer;
public class CameraController : MonoBehaviour
{
public float camTargetRotation { get; private set; } = 0;
public CameraControlMode CamControlMode { get; private set; } = CameraControlMode.SnapRotate;
public Camera MainCamera;
private bool isCamRotating = false;
[Header("Rotation")]
public float mouseSensitivity = 200f;
public float minPitch = -30f;
public float maxPitch = 60f;
public float distance = 5f;
private float yaw;
private float pitch;
[Header("Zoom")]
public float followSpeed = 10f;
public float maxDistance = 6f;
public float minDistance = 1f;
public float zoomSpeed = 5f;
public float heightOffset = -0.5f;
private float currentDistance;
private float distanceVelocity;
[Header("Collision")]
public float collisionRadius = 0.3f;
public float collisionOffset = 0.2f;
public LayerMask collisionMask;
[Header("Occlusion Settings")]
public LayerMask obstructionMask;
public float fadedAlpha = 0.25f;
public float fadeSpeed = 5f;
private Dictionary<Renderer, float> currentAlpha =
new Dictionary<Renderer, float>();
private Dictionary<Renderer, float> targetAlpha =
new Dictionary<Renderer, float>();
public Transform playerCamHome;
Transform dougBody;
private void Update()
{
UpdateOcclusion();
UpdateFade();
if (Input.GetMouseButton(1))
{
HandleFreeCamRotation();
}
else
{
CamAvoidCollisions();
}
}
void Start()
{
Vector3 angles = playerCamHome.transform.eulerAngles;
yaw = angles.y;
pitch = angles.x;
currentDistance = distance;
}
/// <summary>
/// Trigger cam rotation
/// </summary>
public void RotateCam()
{
if (!isCamRotating)
{
float currentY = playerCamHome.transform.rotation.eulerAngles.y;
camTargetRotation = currentY + 90f;
isCamRotating = true;
}
}
/// <summary>
/// Set cam rotation immediately
/// </summary>
void SnapToRotation(float rotation)
{
if (CamControlMode == CameraControlMode.SnapRotate)
{
playerCamHome.RotateAround(
transform.position,
Vector3.up,
rotation
);
camTargetRotation = rotation;
}
}
/// <summary>
/// Move cam to desired rotation (every frame)
/// </summary>
void HandleSnapCamRotation()
{
float currentY = playerCamHome.transform.rotation.eulerAngles.y;
float step = 200 * Time.deltaTime;
float newY = Mathf.MoveTowardsAngle(currentY, camTargetRotation, step);
playerCamHome.RotateAround(
transform.position,
Vector3.up,
newY - currentY
);
if (Mathf.Abs(Mathf.DeltaAngle(newY, camTargetRotation)) < 0.01f)
{
isCamRotating = false;
}
}
/// <summary>
/// Move cam to desired free rotation (every frame)
/// </summary>
void HandleFreeCamRotation()
{
if (dougBody == null)
{
if (GameManager.Instance.PlayerController.DougBody != null)
dougBody = GameManager.Instance.PlayerController.DougBody.transform;
else
return;
}
Vector3 target = new Vector3(dougBody.position.x, dougBody.position.y + heightOffset, dougBody.position.z);
// Mouse Input
float mouseX = Input.GetAxis("Mouse X");
float mouseY = Input.GetAxis("Mouse Y");
yaw += mouseX * mouseSensitivity * Time.deltaTime;
pitch -= mouseY * mouseSensitivity * Time.deltaTime;
pitch = Mathf.Clamp(pitch, minPitch, maxPitch);
// Rotation
Quaternion rotation = Quaternion.Euler(pitch, yaw, 0);
// Zoom
float scroll = Input.GetAxis("Mouse ScrollWheel");
if (Mathf.Abs(scroll) > 0.0001f)
{
distance -= scroll * zoomSpeed;
distance = Mathf.Clamp(distance, minDistance, maxDistance);
}
currentDistance = Mathf.SmoothDamp(
currentDistance,
distance,
ref distanceVelocity,
0.05f);
float adjustedDistance = currentDistance;
Vector3 desiredDirection =
rotation * Vector3.back;
// Camera obstruction handling
if (Physics.SphereCast(
target,
collisionRadius,
desiredDirection,
out RaycastHit hit,
currentDistance,
collisionMask,
QueryTriggerInteraction.Ignore))
{
adjustedDistance =
Mathf.Max(
hit.distance - collisionOffset,
minDistance);
}
// Desired Position
Vector3 offset = rotation * Vector3.forward * -adjustedDistance;
Vector3 desiredPosition = target + offset;
if (desiredPosition.y < dougBody.position.y)
{
desiredPosition.y = dougBody.position.y;
}
// Smooth Follow
playerCamHome.transform.position = Vector3.Lerp(
playerCamHome.transform.position,
desiredPosition,
followSpeed * Time.deltaTime
);
// Look at player
playerCamHome.transform.LookAt(target + Vector3.up);
}
void CamAvoidCollisions()
{
if (dougBody == null)
{
if (GameManager.Instance.PlayerController.DougBody != null)
dougBody = GameManager.Instance.PlayerController.DougBody.transform;
else
return;
}
Vector3 target = new Vector3(dougBody.position.x, dougBody.position.y + heightOffset, dougBody.position.z);
Quaternion rotation = Quaternion.Euler(pitch, yaw, 0);
Vector3 desiredDirection = rotation * Vector3.back;
float adjustedDistance = currentDistance;
if (Physics.SphereCast(
target,
collisionRadius,
desiredDirection,
out RaycastHit hit,
currentDistance,
collisionMask,
QueryTriggerInteraction.Ignore))
{
adjustedDistance =
Mathf.Max(
hit.distance - collisionOffset,
minDistance);
}
// Desired Position
Vector3 offset = rotation * Vector3.forward * -adjustedDistance;
Vector3 desiredPosition = target + offset;
if (desiredPosition.y < dougBody.position.y)
{
desiredPosition.y = dougBody.position.y;
}
// Smooth Follow
playerCamHome.transform.position = Vector3.Lerp(
playerCamHome.transform.position,
desiredPosition,
followSpeed * Time.deltaTime
);
// Look at player
playerCamHome.transform.LookAt(target + Vector3.up);
}
void UpdateOcclusion()
{
if (dougBody == null)
{
if (GameManager.Instance.PlayerController.DougBody != null)
dougBody = GameManager.Instance.PlayerController.DougBody.transform;
else
return;
}
// Reset all renderers to visible
foreach (Renderer r in new List<Renderer>(targetAlpha.Keys))
{
targetAlpha[r] = 1f;
}
Vector3 dir =
MainCamera.transform.position - dougBody.position;
float dist = dir.magnitude;
RaycastHit[] hits = Physics.RaycastAll(
dougBody.position,
dir.normalized,
dist,
obstructionMask,
QueryTriggerInteraction.Ignore);
foreach (RaycastHit hit in hits)
{
Renderer r = hit.collider.GetComponent<Renderer>();
if (r == null)
continue;
if (!currentAlpha.ContainsKey(r))
{
currentAlpha[r] = 1f;
targetAlpha[r] = 1f;
}
targetAlpha[r] = fadedAlpha;
}
}
void UpdateFade()
{
List<Renderer> renderers =
new List<Renderer>(currentAlpha.Keys);
foreach (Renderer r in renderers)
{
float current = currentAlpha[r];
float target = targetAlpha[r];
current = Mathf.Lerp(
current,
target,
Time.deltaTime * fadeSpeed);
currentAlpha[r] = current;
foreach (Material mat in r.materials)
{
Color c = mat.color;
c.a = current;
if (Mathf.Abs(current - targetAlpha[r]) < 0.05f)
{
c.a = targetAlpha[r];
}
mat.color = c;
}
// Cleanup once fully restored
if (Mathf.Abs(current - 1f) < 0.01f &&
Mathf.Abs(target - 1f) < 0.01f)
{
currentAlpha.Remove(r);
targetAlpha.Remove(r);
}
}
}
}
public enum CameraControlMode
{
SnapRotate,
FreeRotate
}
+121 -23
View File
@@ -11,13 +11,17 @@ public class GameManager : MonoBehaviour
public static GameManager Instance { get; private set; } public static GameManager Instance { get; private set; }
public DialogueManager DialogueManager { get; private set; } public DialogueManager DialogueManager { get; private set; }
public TimeManager TimeManager { get; private set; } public TimeManager TimeManager { get; private set; }
public PlayerManager PlayerManager { get; private set; }
public Inventory Inventory { get; private set; } public Inventory Inventory { get; private set; }
public Storybools Storybools { get; private set; } public Storybools Storybools { get; private set; }
public MenuController MenuController { get; private set; }
public SoundSettingManager SoundSettingManager { get; private set; }
public PlayerController PlayerController { get; private set; }
public Image BlackScreen { get; private set; }
// Are we currently in a scene transition? // Are we currently in a scene transition?
private bool isTransitioningScenes = false; private bool isTransitioningScenes = false;
private Image blackScreen;
private PlayerController playerController;
private void Awake() private void Awake()
{ {
@@ -26,6 +30,7 @@ private void Awake()
if (Instance != null && Instance != this) if (Instance != null && Instance != this)
{ {
Destroy(this.gameObject); Destroy(this.gameObject);
return;
} }
else else
{ {
@@ -35,9 +40,11 @@ private void Awake()
DontDestroyOnLoad(gameObject); DontDestroyOnLoad(gameObject);
ReloadReferences(); ReloadReferences();
}
private void Start()
{
SaveSystem.Load(); SaveSystem.Load();
SaveSystem.Save(); // save off any corruption fixes
} }
/// <summary> /// <summary>
@@ -45,15 +52,109 @@ private void Awake()
/// </summary> /// </summary>
private void ReloadReferences() private void ReloadReferences()
{ {
Instance.blackScreen = GameObject.FindWithTag("BlackScreen").GetComponent<Image>(); Instance.BlackScreen = GameObject.FindWithTag("BlackScreen").GetComponent<Image>();
Instance.playerController = GameObject.FindWithTag("Player").GetComponent<PlayerController>(); Instance.PlayerController = GameObject.FindWithTag("Player").GetComponent<PlayerController>();
Instance.DialogueManager = GetComponent<DialogueManager>(); Instance.DialogueManager = GetComponent<DialogueManager>();
Instance.DialogueManager.ReloadReferences(); Instance.DialogueManager.ReloadReferences();
Instance.Inventory = GetComponent<Inventory>(); Instance.Inventory = GetComponent<Inventory>();
Instance.TimeManager = GetComponent<TimeManager>(); Instance.TimeManager = GetComponent<TimeManager>();
Instance.PlayerManager = GetComponent<PlayerManager>();
Instance.SoundSettingManager = GetComponent<SoundSettingManager>();
Instance.SoundSettingManager.ReloadReferences();
Instance.MenuController = GameObject.FindWithTag("MenuController").GetComponent<MenuController>();
Instance.MenuController.HideAllScreens();
} }
#region Map Load Handling
/// <summary>
/// Triggers transition to a map point
/// </summary>
public void GoToMapPoint(MapPoint mapPoint, bool instantBlackScreen = false)
{
StartCoroutine(GoToMapPointCoroutine(mapPoint, instantBlackScreen));
}
/// <summary>
/// Executes transition to map point (scene and location)
/// </summary>
private IEnumerator GoToMapPointCoroutine(MapPoint mapPoint, bool instantBlackScreen)
{
Instance.isTransitioningScenes = true;
Instance.PlayerController.SetCharacterControl(false);
// Fade to black
float fadeDuration = 0.2f; // how long to fade to/from black
float moveDuration = 0.4f; // how long to auto walk into room from the door
float fadeTime = 0;
Color blackScreenColor = Color.black;
// Fade to black when instantBlackScreen is false
if (!instantBlackScreen)
{
while (fadeTime < fadeDuration)
{
blackScreenColor.a = Mathf.Lerp(0, 1, fadeTime / fadeDuration);
Instance.BlackScreen.color = blackScreenColor;
fadeTime += Time.deltaTime;
yield return null;
}
fadeTime = 0;
}
else
{
// instantly make screen black before scene transition
blackScreenColor.a = 1;
Instance.BlackScreen.color = blackScreenColor;
}
AsyncOperation asyncLoad = SceneManager.LoadSceneAsync(mapPoint.Scene);
while (!asyncLoad.isDone)
{
// Optional: Update a loading bar with asyncLoad.progress
yield return null;
}
ReloadReferences();
// Make sure screen is black in new scene
Instance.BlackScreen.color = blackScreenColor;
if (Instance.PlayerController != null && GameSceneManager.Instance != null)
{
Instance.PlayerController.CharacterControllerMove(mapPoint.SpawnPosition - PlayerController.transform.position);
}
// Fade back in
while (fadeTime < fadeDuration)
{
blackScreenColor.a = Mathf.Lerp(1, 0, fadeTime / fadeDuration);
Instance.BlackScreen.color = blackScreenColor;
fadeTime += Time.deltaTime;
yield return null;
}
blackScreenColor.a = 0;
Instance.BlackScreen.color = blackScreenColor;
// move character a little more
while (fadeTime < moveDuration)
{
fadeTime += Time.deltaTime;
yield return null;
}
fadeTime = 0;
Instance.isTransitioningScenes = false;
Instance.PlayerController.SetCharacterControl(true);
}
#endregion
#region Scene Door Handling
/// <summary> /// <summary>
/// Triggers transition to specified scene at the door with the specified ID /// Triggers transition to specified scene at the door with the specified ID
/// </summary> /// </summary>
@@ -68,7 +169,7 @@ public void EnterSceneDoor(string scene, int door)
private IEnumerator EnterSceneDoorCoroutine(string scene, int doorId) private IEnumerator EnterSceneDoorCoroutine(string scene, int doorId)
{ {
Instance.isTransitioningScenes = true; Instance.isTransitioningScenes = true;
Instance.playerController.SetCharacterControl(false); Instance.PlayerController.SetCharacterControl(false);
// Fade to black // Fade to black
float fadeDuration = 0.2f; // how long to fade to/from black float fadeDuration = 0.2f; // how long to fade to/from black
@@ -79,7 +180,7 @@ private IEnumerator EnterSceneDoorCoroutine(string scene, int doorId)
while (fadeTime < fadeDuration) while (fadeTime < fadeDuration)
{ {
blackScreenColor.a = Mathf.Lerp(0, 1, fadeTime / fadeDuration); blackScreenColor.a = Mathf.Lerp(0, 1, fadeTime / fadeDuration);
blackScreen.color = blackScreenColor; Instance.BlackScreen.color = blackScreenColor;
fadeTime += Time.deltaTime; fadeTime += Time.deltaTime;
yield return null; yield return null;
} }
@@ -96,16 +197,17 @@ private IEnumerator EnterSceneDoorCoroutine(string scene, int doorId)
ReloadReferences(); ReloadReferences();
// Make sure screen is black in new scene // Make sure screen is black in new scene
blackScreen.color = blackScreenColor; blackScreenColor.a = 1;
Instance.BlackScreen.color = blackScreenColor;
SceneDoor door = GameSceneManager.Instance.GetDoorWithId(doorId); SceneDoor door = GameSceneManager.Instance.GetDoorWithId(doorId);
if (Instance.playerController != null && GameSceneManager.Instance != null) if (Instance.PlayerController != null && GameSceneManager.Instance != null)
{ {
if (door != null) if (door != null)
{ {
Instance.playerController.CharacterControllerMove(door.gameObject.transform.position - playerController.transform.position); Instance.PlayerController.CharacterControllerMove(door.gameObject.transform.position - PlayerController.transform.position);
Instance.playerController.DougBody.transform.rotation = door.gameObject.transform.rotation; Instance.PlayerController.DougBody.transform.rotation = door.gameObject.transform.rotation;
} }
} }
@@ -113,17 +215,20 @@ private IEnumerator EnterSceneDoorCoroutine(string scene, int doorId)
while (fadeTime < fadeDuration) while (fadeTime < fadeDuration)
{ {
blackScreenColor.a = Mathf.Lerp(1, 0, fadeTime / fadeDuration); blackScreenColor.a = Mathf.Lerp(1, 0, fadeTime / fadeDuration);
Instance.blackScreen.color = blackScreenColor; Instance.BlackScreen.color = blackScreenColor;
fadeTime += Time.deltaTime; fadeTime += Time.deltaTime;
Instance.playerController.WalkInDirection((door.WalkDirection.position - playerController.transform.position).normalized); Instance.PlayerController.WalkInDirection((door.WalkDirection.position - PlayerController.transform.position).normalized);
yield return null; yield return null;
} }
blackScreenColor.a = 0;
Instance.BlackScreen.color = blackScreenColor;
// move character a little more // move character a little more
while (fadeTime < moveDuration) while (fadeTime < moveDuration)
{ {
Instance.playerController.WalkInDirection((door.WalkDirection.position - playerController.transform.position).normalized); Instance.PlayerController.WalkInDirection((door.WalkDirection.position - PlayerController.transform.position).normalized);
fadeTime += Time.deltaTime; fadeTime += Time.deltaTime;
yield return null; yield return null;
} }
@@ -131,8 +236,9 @@ private IEnumerator EnterSceneDoorCoroutine(string scene, int doorId)
fadeTime = 0; fadeTime = 0;
Instance.isTransitioningScenes = false; Instance.isTransitioningScenes = false;
Instance.playerController.SetCharacterControl(true); Instance.PlayerController.SetCharacterControl(true);
} }
#endregion
/// <summary> /// <summary>
/// Are we currently in the middle of a scene transition? /// Are we currently in the middle of a scene transition?
@@ -142,14 +248,6 @@ public bool InSceneTransition()
return Instance.isTransitioningScenes; return Instance.isTransitioningScenes;
} }
/// <summary>
/// Get the blackscreen object reference
/// </summary>
public Image GetBlackScreen()
{
return Instance.blackScreen;
}
#region Storybool Save/Load #region Storybool Save/Load
public void SaveStoryBools(ref StoryboolSaveData data) public void SaveStoryBools(ref StoryboolSaveData data)
{ {
@@ -4,7 +4,7 @@ MonoImporter:
externalObjects: {} externalObjects: {}
serializedVersion: 2 serializedVersion: 2
defaultReferences: [] defaultReferences: []
executionOrder: -1 executionOrder: -500
icon: {instanceID: 0} icon: {instanceID: 0}
userData: userData:
assetBundleName: assetBundleName:
+16
View File
@@ -0,0 +1,16 @@
using UnityEngine;
// Gives a location to be teleported to and displayed on a map. This will be used by
// the game manager to allow for fast travel
[System.Serializable]
public class MapPoint
{
public string Scene;
public Vector3 SpawnPosition;
public MapPoint(string scene, Vector3 spawnPosition)
{
this.Scene = scene;
this.SpawnPosition = spawnPosition;
}
}
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 5c03ccad2a919f74d95b0d3a409412b9
@@ -1,60 +1,84 @@
using System.Collections; using System.Collections;
using Unity.VisualScripting.Antlr3.Runtime;
using UnityEngine; using UnityEngine;
using static UnityEngine.GraphicsBuffer; using static UnityEngine.GraphicsBuffer;
public class PlayerController : MonoBehaviour public class PlayerController : MonoBehaviour
{ {
public GameObject DougBody; public GameObject DougBody;
public Shovel Shovel;
public Tool[] tools;
float toolUseTimestamp = 0;
public float walkSpeed; public float walkSpeed;
public float sprintMultiplier = 1.5f; public float sprintMultiplier = 1.5f;
public float gravity = 10; public float gravity = 10;
float digTime = 0.9f;
float digTimestamp = 0;
bool isDigging = false;
Interactable nearestInteractable; Interactable nearestInteractable;
public CameraController cameraController;
private CharacterController characterController; private CharacterController characterController;
private CameraController cameraController;
private Vector3 moveDir; private Vector3 moveDir;
private bool hasControl = true; // set this to false if we want to stop reading player inputs private bool hasControl = true; // set this to false if we want to stop reading player inputs
private bool canUseTools = true; // set this to false if we want to stop reading player tool use
private bool isSprinting = false; private bool isSprinting = false;
private bool paused = false;
// Mathematical plane used to catch the raycast from camera to get direction for
// looking at the mouse
private Plane groundPlane;
// Start is called once before the first execution of Update after the MonoBehaviour is created // Start is called once before the first execution of Update after the MonoBehaviour is created
void Start() void Start()
{ {
groundPlane = new Plane(Vector3.up, -DougBody.transform.position.y);
characterController = GetComponent<CharacterController>(); characterController = GetComponent<CharacterController>();
cameraController = GetComponent<CameraController>(); cameraController = GetComponent<CameraController>();
SwitchTools(GameManager.Instance.PlayerManager.CurrentToolIndex);
} }
// Update is called once per frame // Update is called once per frame
void Update() void Update()
{ {
moveDir = Vector3.zero; moveDir = Vector3.zero;
groundPlane.distance = -DougBody.transform.position.y;
// TODO: Move input detection somewhere else
if (Input.GetKeyDown(KeyCode.Escape))
{
if (!paused)
{
Cursor.lockState = CursorLockMode.None;
Time.timeScale = 0;
canUseTools = false;
hasControl = false;
GameManager.Instance.MenuController.ShowScreen("Pause");
}
else
{
Time.timeScale = 1;
canUseTools = true;
hasControl = true;
GameManager.Instance.MenuController.HideAllScreens();
}
paused = !paused;
}
if (hasControl) if (hasControl)
{ {
if (!isDigging) if (!tools[GameManager.Instance.PlayerManager.CurrentToolIndex].inUse)
{ {
RotatePlayerTowardMouse(); RotatePlayerTowardMouse();
TryInteract(); TryInteract();
} }
DigDetector(); CheckWeaponChange();
ApplyWalk(); ApplyWalk();
// TODO: This is just for testing, remove or clean up if used
if (Input.GetKeyDown(KeyCode.Q))
{
cameraController.RotateCam();
} }
// TODO: Add actual save feature later, this is just for test if (canUseTools)
if (Input.GetKeyDown(KeyCode.I))
{ {
SaveSystem.Save(); ToolUseDetector();
}
} }
CheckSprint(); CheckSprint();
@@ -77,6 +101,24 @@ private void CheckSprint()
} }
} }
/// <summary>
/// Checks if weapon is being switched by scroll wheel
/// </summary>
private void CheckWeaponChange()
{
if (!Input.GetMouseButton(1))
{
if (Input.mouseScrollDelta.y > 0)
{
SwitchTools(true);
}
else if (Input.mouseScrollDelta.y < 0)
{
SwitchTools(false);
}
}
}
/// <summary> /// <summary>
/// Apply walking inputs to moveDir /// Apply walking inputs to moveDir
/// </summary> /// </summary>
@@ -85,7 +127,7 @@ void ApplyWalk()
float verticalMovement = 0; float verticalMovement = 0;
float horizontalMovement = 0; float horizontalMovement = 0;
if (!isDigging) if (!tools[GameManager.Instance.PlayerManager.CurrentToolIndex].inUse)
{ {
verticalMovement = Input.GetAxisRaw("Vertical"); verticalMovement = Input.GetAxisRaw("Vertical");
horizontalMovement = Input.GetAxisRaw("Horizontal"); horizontalMovement = Input.GetAxisRaw("Horizontal");
@@ -113,10 +155,7 @@ void ApplyGravity()
else else
moveDir *= walkSpeed; moveDir *= walkSpeed;
if (!characterController.isGrounded) moveDir.y += -gravity;
{
moveDir.y = -gravity;
}
} }
/// <summary> /// <summary>
@@ -151,24 +190,30 @@ public void WalkInDirection(Vector3 direction)
} }
/// <summary> /// <summary>
/// Detect input for digging (will eventually be tool agnostic) /// Detect input for tool use
/// </summary> /// </summary>
void DigDetector() void ToolUseDetector()
{ {
if (!isDigging) if (!tools[GameManager.Instance.PlayerManager.CurrentToolIndex].inUse)
{ {
if (Input.GetMouseButtonDown(0)) if (Input.GetMouseButtonDown(0))
{ {
Shovel.Dig(); tools[GameManager.Instance.PlayerManager.CurrentToolIndex].Use();
isDigging = true; tools[GameManager.Instance.PlayerManager.CurrentToolIndex].inUse = true;
digTimestamp = Time.time + digTime; // fuck coroutines fr fr toolUseTimestamp = Time.time + tools[GameManager.Instance.PlayerManager.CurrentToolIndex].useTimeSec; // fuck coroutines fr fr
}
else if (Input.GetMouseButtonDown(1))
{
tools[GameManager.Instance.PlayerManager.CurrentToolIndex].UseAlt();
tools[GameManager.Instance.PlayerManager.CurrentToolIndex].inUse = true;
toolUseTimestamp = Time.time + tools[GameManager.Instance.PlayerManager.CurrentToolIndex].altUseTimeSec;
} }
} }
else else
{ {
if (Time.time > digTimestamp) if (Time.time > toolUseTimestamp)
{ {
isDigging = false; tools[GameManager.Instance.PlayerManager.CurrentToolIndex].inUse = false;
} }
} }
} }
@@ -179,17 +224,12 @@ void DigDetector()
void RotatePlayerTowardMouse() void RotatePlayerTowardMouse()
{ {
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit, Mathf.Infinity)) if (groundPlane.Raycast(ray, out var distance))
{ {
Vector3 targetPosition = hit.point; Vector3 hitPoint = ray.GetPoint(distance);
targetPosition.y = transform.position.y;
Vector3 direction = targetPosition - transform.position; DougBody.transform.LookAt(new Vector3(hitPoint.x, DougBody.transform.position.y, hitPoint.z));
Quaternion targetRotation = Quaternion.LookRotation(direction, Vector3.up);
DougBody.transform.rotation = targetRotation;
} }
} }
@@ -237,6 +277,14 @@ public void SetCharacterControl(bool hasControl)
this.hasControl = hasControl; this.hasControl = hasControl;
} }
/// <summary>
/// Sets the character's "canUseTools" bool. Tool use input is ignored when false
/// </summary>
public void SetCharacterCanUseTools(bool canUseTools)
{
this.canUseTools = canUseTools;
}
/// <summary> /// <summary>
/// Gets the character's "hasControl" bool. All input is ignored when false /// Gets the character's "hasControl" bool. All input is ignored when false
/// </summary> /// </summary>
@@ -244,4 +292,63 @@ public bool GetCharacterHasControl()
{ {
return hasControl; return hasControl;
} }
/// <summary>
/// Expose the character controller's velocity
/// </summary>
public Vector3 GetVelocity()
{
return characterController.velocity;
}
/// <summary>
/// Switches the tools in hand by taking an index
///
/// <param name="toolIndex">Index of the tool to switch to</param>
/// </summary>
private void SwitchTools(int toolIndex)
{
if (toolIndex < 0 || toolIndex >= tools.Length)
{
toolIndex = 0;
}
// disable all tools
foreach (Tool tool in tools)
{
tool.gameObject.SetActive(false);
}
// load new tool
GameManager.Instance.PlayerManager.CurrentToolIndex = toolIndex;
tools[GameManager.Instance.PlayerManager.CurrentToolIndex].gameObject.SetActive(true);
}
/// <summary>
/// Switches the tools in hand by moving up or down the list
///
/// <param name="up">Are we moving up (-1) the list?</param>
/// </summary>
private void SwitchTools(bool up)
{
// calculate index of next tool
int newIndex = up ? GameManager.Instance.PlayerManager.CurrentToolIndex - 1 : GameManager.Instance.PlayerManager.CurrentToolIndex + 1;
if (newIndex < 0)
{
newIndex = tools.Length + newIndex;
}
else if (newIndex >= tools.Length)
{
newIndex = newIndex % tools.Length;
}
// disable current tool
tools[GameManager.Instance.PlayerManager.CurrentToolIndex].gameObject.SetActive(false);
// load new tool
GameManager.Instance.PlayerManager.CurrentToolIndex = newIndex;
tools[GameManager.Instance.PlayerManager.CurrentToolIndex].gameObject.SetActive(true);
}
} }
@@ -0,0 +1,38 @@
using UnityEngine;
using UnityEngine.SceneManagement;
// Handles scene-persistent player data
public class PlayerManager : MonoBehaviour
{
public int CurrentToolIndex;
#region Player Data Save/Load
public void SavePlayerData(ref PlayerSaveData data)
{
data.activeToolIndex = GameManager.Instance.PlayerManager.CurrentToolIndex;
data.dougPosition = GameManager.Instance.PlayerController.transform.position;
data.currentScene = SceneManager.GetActiveScene().name;
}
public void LoadPlayerData(PlayerSaveData data)
{
if (data.currentScene != null && data.currentScene != SceneManager.GetActiveScene().name)
{
GameManager.Instance.GoToMapPoint(new MapPoint(data.currentScene, data.dougPosition), true);
}
else
{
GameManager.Instance.PlayerManager.CurrentToolIndex = data.activeToolIndex;
GameManager.Instance.PlayerController.transform.position = data.dougPosition;
}
}
#endregion
}
[System.Serializable]
public struct PlayerSaveData
{
public int activeToolIndex;
public Vector3 dougPosition;
public string currentScene;
}
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: f9c9dde58f68b5e4d9fc0036b990c481
+3 -3
View File
@@ -5,9 +5,9 @@ public class Quest : MonoBehaviour
public bool hasStarted = false; public bool hasStarted = false;
public bool hasCompleted = false; public bool hasCompleted = false;
public string[] askText; // ask the player to complete the task public DialogueLine[] askText; // ask the player to complete the task
public string[] duringText; // what to say to the player when the task is complete public DialogueLine[] duringText; // what to say to the player when the task is complete
public string[] completionText; // what to say to the player upon completion public DialogueLine[] completionText; // what to say to the player upon completion
public int questID = 0; // connects the quest to the registry, which gives us conditions public int questID = 0; // connects the quest to the registry, which gives us conditions
@@ -53,9 +53,40 @@ private void Awake()
questBoolMap.Add(1, QID1_List); questBoolMap.Add(1, QID1_List);
#endregion #endregion
#region 2 - (Story Quest #1) No More Freeloading
// This is the first time we talk to grandma. She wants help around the house.
// Quest is complete after we talk to the shop keeper and complete quest 3.
QuestBool[] QID2_List = new QuestBool[1];
// QID2_1_completedQuest3
QID2_List[0] = new QuestBool(() =>
{
return CompletedQuests.Contains(3);
});
questBoolMap.Add(2, QID2_List);
#endregion
#region 3 - (Story Quest #1.5) First Paycheck
// This is the first time we talk to the shopkeeper. He tells us to find a star
// shard and bring it to him.
QuestBool[] QID3_List = new QuestBool[1];
// QID3_1_hasEnoughStarshards
QID3_List[0] = new QuestBool(() =>
{
return GameManager.Instance.Inventory.GetItemQuantity(ItemIdEnum.STAR_SHARD) > 0;
});
questBoolMap.Add(3, QID3_List);
#endregion
return questBoolMap; return questBoolMap;
} }
#region Save/Load Quest Data
// Save completed quests to disk // Save completed quests to disk
public void SaveQuestData(ref QuestSaveData data) public void SaveQuestData(ref QuestSaveData data)
{ {
@@ -83,6 +114,7 @@ public void LoadQuestData(QuestSaveData data)
Instance.CompletedQuests = new List<int>(); Instance.CompletedQuests = new List<int>();
} }
} }
#endregion
} }
public class QuestBool public class QuestBool
@@ -4,7 +4,7 @@ MonoImporter:
externalObjects: {} externalObjects: {}
serializedVersion: 2 serializedVersion: 2
defaultReferences: [] defaultReferences: []
executionOrder: -2 executionOrder: -501
icon: {instanceID: 0} icon: {instanceID: 0}
userData: userData:
assetBundleName: assetBundleName:
@@ -7,4 +7,8 @@ public class Storybools
#region QID1 #region QID1
public bool hasHelpedSam = false; public bool hasHelpedSam = false;
#endregion #endregion
#region QID3
public bool talkedToShopkeep = false;
#endregion
} }
+19
View File
@@ -13,6 +13,8 @@ public struct SaveData
public StoryboolSaveData StoryboolData; public StoryboolSaveData StoryboolData;
public InventorySaveData InventorySaveData; public InventorySaveData InventorySaveData;
public TimeSaveData TimeSaveData; public TimeSaveData TimeSaveData;
public PlayerSaveData PlayerSaveData;
public SoundSettingSaveData SoundSettingSaveData;
} }
public static string SaveFileName() public static string SaveFileName()
@@ -40,12 +42,27 @@ public static void Save()
File.WriteAllText(SaveFileName(), JsonUtility.ToJson(_saveData, true)); File.WriteAllText(SaveFileName(), JsonUtility.ToJson(_saveData, true));
} }
public static void ClearSave()
{
try
{
File.Delete(SaveFileName());
Debug.Log("File deleted successfully. Stop and restart player.");
}
catch (FileNotFoundException)
{
// file doesn't exist, don't need to do anything
}
}
private static void HandleSaveData() private static void HandleSaveData()
{ {
GameManager.Instance.SaveStoryBools(ref _saveData.StoryboolData); GameManager.Instance.SaveStoryBools(ref _saveData.StoryboolData);
GameManager.Instance.Inventory.SaveInventory(ref _saveData.InventorySaveData); GameManager.Instance.Inventory.SaveInventory(ref _saveData.InventorySaveData);
GameManager.Instance.TimeManager.SaveTime(ref _saveData.TimeSaveData); GameManager.Instance.TimeManager.SaveTime(ref _saveData.TimeSaveData);
GameManager.Instance.PlayerManager.SavePlayerData(ref _saveData.PlayerSaveData);
QuestRegistry.Instance.SaveQuestData(ref _saveData.QuestData); QuestRegistry.Instance.SaveQuestData(ref _saveData.QuestData);
GameManager.Instance.SoundSettingManager.SaveSoundSettingsData(ref _saveData.SoundSettingSaveData);
} }
public static void Load() public static void Load()
@@ -84,6 +101,8 @@ public static void HandleLoadData()
GameManager.Instance.LoadStoryBools(_saveData.StoryboolData); GameManager.Instance.LoadStoryBools(_saveData.StoryboolData);
GameManager.Instance.Inventory.LoadInventory(_saveData.InventorySaveData); GameManager.Instance.Inventory.LoadInventory(_saveData.InventorySaveData);
GameManager.Instance.TimeManager.LoadTime(_saveData.TimeSaveData); GameManager.Instance.TimeManager.LoadTime(_saveData.TimeSaveData);
GameManager.Instance.PlayerManager.LoadPlayerData(_saveData.PlayerSaveData);
QuestRegistry.Instance.LoadQuestData(_saveData.QuestData); QuestRegistry.Instance.LoadQuestData(_saveData.QuestData);
GameManager.Instance.SoundSettingManager.LoadSoundSettingsData(_saveData.SoundSettingSaveData);
} }
} }
@@ -0,0 +1,101 @@
using UnityEngine;
using UnityEngine.Audio;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class SoundSettingManager : MonoBehaviour
{
public AudioMixer audioMixer;
float masterVolume;
float musicVolume;
float sfxVolume;
Slider MasterSlider;
Slider SfxSlider;
Slider MusicSlider;
private void Start()
{
MasterSlider.value = masterVolume;
SfxSlider.value = sfxVolume;
MusicSlider.value = musicVolume;
}
public void ReloadReferences()
{
MasterSlider = GameObject.FindWithTag("MasterSlider").GetComponent<Slider>();
SfxSlider = GameObject.FindWithTag("SfxSlider").GetComponent<Slider>();
MusicSlider = GameObject.FindWithTag("MusicSlider").GetComponent<Slider>();
MasterSlider.onValueChanged.AddListener(OnMasterValueChanged);
SfxSlider.onValueChanged.AddListener(OnSfxValueChanged);
MusicSlider.onValueChanged.AddListener(OnMusicValueChanged);
MasterSlider.value = masterVolume;
SfxSlider.value = sfxVolume;
MusicSlider.value = musicVolume;
}
public void OnMasterValueChanged(float newValue)
{
masterVolume = newValue;
SetVolumeFloat(newValue, "MasterVolume");
}
public void OnSfxValueChanged(float newValue)
{
sfxVolume = newValue;
SetVolumeFloat(newValue, "SFXVolume");
}
public void OnMusicValueChanged(float newValue)
{
musicVolume = newValue;
SetVolumeFloat(newValue, "MusicVolume");
}
private void SetVolumeFloat(float sliderVal, string mixerGroup)
{
// Convert linear 0-1 to dB (-80 to 0 range)
float dbValue = Mathf.Log10(sliderVal) * 20;
if (sliderVal == 0)
{
dbValue = -80;
}
audioMixer.SetFloat(mixerGroup, dbValue);
}
#region Sound Settings Data Save/Load
public void SaveSoundSettingsData(ref SoundSettingSaveData data)
{
data.musicVolume = musicVolume;
data.sfxVolume = sfxVolume;
data.masterVolume = masterVolume;
}
public void LoadSoundSettingsData(SoundSettingSaveData data)
{
musicVolume = data.musicVolume;
sfxVolume = data.sfxVolume;
masterVolume = data.masterVolume;
MasterSlider.value = masterVolume;
SfxSlider.value = sfxVolume;
MusicSlider.value = musicVolume;
SetVolumeFloat(masterVolume, "MasterVolume");
SetVolumeFloat(musicVolume, "MusicVolume");
SetVolumeFloat(sfxVolume, "SFXVolume");
}
#endregion
}
[System.Serializable]
public struct SoundSettingSaveData
{
public float musicVolume;
public float sfxVolume;
public float masterVolume;
}
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: ab14394efecbd6540af369ced75e81d0
+2 -4
View File
@@ -6,12 +6,10 @@
// Handle room and scene transitions // Handle room and scene transitions
public class TeleportHandler : MonoBehaviour public class TeleportHandler : MonoBehaviour
{ {
Image blackScreenObject;
PlayerController playerController; PlayerController playerController;
private void Start() private void Start()
{ {
blackScreenObject = GameManager.Instance.GetBlackScreen();
playerController = GetComponent<PlayerController>(); playerController = GetComponent<PlayerController>();
} }
@@ -43,7 +41,7 @@ IEnumerator EnterRoomCoroutine(RoomDoor door)
while (fadeTime < fadeDuration) while (fadeTime < fadeDuration)
{ {
blackScreenColor.a = Mathf.Lerp(0, 1, fadeTime / fadeDuration); blackScreenColor.a = Mathf.Lerp(0, 1, fadeTime / fadeDuration);
blackScreenObject.color = blackScreenColor; GameManager.Instance.BlackScreen.color = blackScreenColor;
fadeTime += Time.deltaTime; fadeTime += Time.deltaTime;
yield return null; yield return null;
} }
@@ -55,7 +53,7 @@ IEnumerator EnterRoomCoroutine(RoomDoor door)
while (fadeTime < fadeDuration) while (fadeTime < fadeDuration)
{ {
blackScreenColor.a = Mathf.Lerp(1, 0, fadeTime / fadeDuration); blackScreenColor.a = Mathf.Lerp(1, 0, fadeTime / fadeDuration);
blackScreenObject.color = blackScreenColor; GameManager.Instance.BlackScreen.color = blackScreenColor;
playerController.WalkInDirection((door.linkedDoor.WalkDirection.position - playerController.transform.position).normalized); playerController.WalkInDirection((door.linkedDoor.WalkDirection.position - playerController.transform.position).normalized);
fadeTime += Time.deltaTime; fadeTime += Time.deltaTime;
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 20c8faa2469f8aa45be8aae9439949d1
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+27
View File
@@ -0,0 +1,27 @@
using UnityEngine;
public class Ballgun : Tool
{
[Header("Ball Gun Parameters")]
public float shootForce = 10;
public GameObject ball;
public float ballLifeTime = 5;
public override void Use()
{
GameObject newBall = Instantiate(ball);
newBall.transform.position = transform.position;
Vector3 direction = transform.forward * shootForce;
direction += GameManager.Instance.PlayerController.GetVelocity();
newBall.GetComponent<Rigidbody>().AddForce(direction, ForceMode.Impulse);
Destroy(newBall, ballLifeTime);
}
public override void UseAlt()
{
throw new System.NotImplementedException();
}
}
+2
View File
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 8adaf1de0b489444189e21893ccde9b5
+17
View File
@@ -0,0 +1,17 @@
using UnityEngine;
public class Flashlight : Tool
{
[Header("Flashlight Parameters")]
public Light lightSrc;
public override void Use()
{
lightSrc.enabled = !lightSrc.enabled;
}
public override void UseAlt()
{
}
}
+2
View File
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: edd0364a446d1fd489dd8bbb53de613a
+128
View File
@@ -0,0 +1,128 @@
using System.Collections;
using UnityEngine;
public class GrappleGun : Tool
{
[Header("Grapple Gun Parameters")]
public float range;
public float hookStickTime;
public GameObject hook;
bool isMoving = false;
bool stuckInTarget = false;
private Vector3 hookBaseLocation;
private Transform hookParent;
private void Start()
{
hookBaseLocation = hook.transform.localPosition;
hookParent = hook.transform.parent;
}
IEnumerator GoToTarget(Vector3 target)
{
GameManager.Instance.PlayerController.SetCharacterControl(false);
isMoving = true;
Vector3 startPosition = hook.transform.position;
float elapsedTime = 0f;
while (elapsedTime < hookStickTime)
{
float t = elapsedTime / hookStickTime;
hook.transform.position = Vector3.Lerp(startPosition, target, t);
elapsedTime += Time.deltaTime;
yield return null;
}
// Ensure final position is exact
hook.transform.position = target;
hook.transform.parent = null;
isMoving = false;
stuckInTarget = true;
StartCoroutine(MovePlayerToTarget(target));
}
IEnumerator MovePlayerToTarget(Vector3 target)
{
Transform player = GameManager.Instance.PlayerController.transform;
Vector3 startPosition = player.position;
float elapsedTime = 0f;
while (elapsedTime < hookStickTime)
{
float t = elapsedTime / hookStickTime;
player.position = Vector3.Lerp(startPosition, target, t);
elapsedTime += Time.deltaTime;
yield return null;
}
// Ensure final position is exact
player.position = target;
stuckInTarget = false;
hook.transform.parent = hookParent;
hook.transform.localPosition = hookBaseLocation;
isMoving = false;
stuckInTarget = false;
GameManager.Instance.PlayerController.SetCharacterControl(true);
}
IEnumerator ShootAndMiss()
{
GameManager.Instance.PlayerController.SetCharacterControl(false);
isMoving = true;
// move to edge of range and don't stick anywhere
Vector3 startPosition = hook.transform.position;
Vector3 target = transform.position + (transform.forward * range);
float elapsedTime = 0f;
while (elapsedTime < hookStickTime)
{
float t = elapsedTime / hookStickTime;
hook.transform.position = Vector3.Lerp(startPosition, target, t);
elapsedTime += Time.deltaTime;
yield return null;
}
hook.transform.localPosition = hookBaseLocation;
isMoving = false;
stuckInTarget = false;
GameManager.Instance.PlayerController.SetCharacterControl(true);
}
public override void Use()
{
if (stuckInTarget || isMoving)
{
StopAllCoroutines();
hook.transform.parent = hookParent;
hook.transform.localPosition = hookBaseLocation;
isMoving = false;
stuckInTarget = false;
GameManager.Instance.PlayerController.SetCharacterControl(true);
}
else
{
RaycastHit hit;
if (Physics.Raycast(transform.position, transform.forward, out hit, range))
{
StartCoroutine(GoToTarget(hit.point));
}
else
{
StartCoroutine(ShootAndMiss());
}
}
}
public override void UseAlt()
{
throw new System.NotImplementedException();
}
}
+2
View File
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 70102eddcaad3044d9ac0ec62519caad
@@ -1,14 +1,20 @@
using UnityEngine; using UnityEngine;
public class Shovel : MonoBehaviour public class Shovel : Tool
{ {
[Header("Shovel Parameters")]
public Animator shovelAnimator; public Animator shovelAnimator;
public void Dig() public override void Use()
{ {
shovelAnimator.SetTrigger("Dig"); shovelAnimator.SetTrigger("Dig");
} }
public override void UseAlt()
{
// no tool
}
// this only works if this script is sitting on the object with the collider!! // this only works if this script is sitting on the object with the collider!!
private void OnTriggerEnter(Collider other) private void OnTriggerEnter(Collider other)
{ {
+86
View File
@@ -0,0 +1,86 @@
using UnityEngine;
using UnityEngine.Rendering.Universal;
using static UnityEngine.GraphicsBuffer;
public class ThrowableHand : Tool
{
[Header("Throwable Hand Parameters")]
public float range;
public float forceModifier;
public float loft;
public GameObject testBomb;
// Mathematical plane used to catch the raycast from camera to get direction for
// looking at the mouse
private Plane handGroundPlane;
private DecalProjector targetProjection;
private float throwForce;
private void Update()
{
if (GameManager.Instance.PlayerController != null)
{
SetGroundPlane();
DrawTargetProjection();
}
}
private void SetGroundPlane()
{
if (handGroundPlane == null)
{
handGroundPlane = new Plane(Vector3.up, -GameManager.Instance.PlayerController.DougBody.transform.position.y);
}
handGroundPlane.distance = -GameManager.Instance.PlayerController.DougBody.transform.position.y;
handGroundPlane.normal = Vector3.up;
}
private void DrawTargetProjection()
{
if (targetProjection == null)
{
targetProjection = GetComponentInChildren<DecalProjector>();
}
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (handGroundPlane.Raycast(ray, out var distance))
{
Vector3 hitPoint = ray.GetPoint(distance);
float distanceFromPoint = Vector3.Distance(hitPoint, transform.position);
if (distanceFromPoint > range)
{
Vector3 directionTowardMouse = (hitPoint - transform.position).normalized;
targetProjection.transform.position = new Vector3(transform.position.x, hitPoint.y, transform.position.z);
targetProjection.transform.position += directionTowardMouse * range;
throwForce = range;
}
else
{
targetProjection.gameObject.SetActive(true);
targetProjection.transform.position = hitPoint;
throwForce = distanceFromPoint;
}
}
}
public override void Use()
{
GameObject newBomb = Instantiate(testBomb);
newBomb.transform.position = transform.position;
Vector3 direction = transform.forward * throwForce * forceModifier;
direction += GameManager.Instance.PlayerController.GetVelocity();
direction.y = loft;
newBomb.GetComponent<Rigidbody>().AddForce(direction, ForceMode.Impulse);
}
public override void UseAlt()
{
throw new System.NotImplementedException();
}
}
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: fe5aedf75d904534296ad0d07fe55622
+16
View File
@@ -0,0 +1,16 @@
using UnityEngine;
public abstract class Tool : MonoBehaviour
{
[Header("Base Tool Parameters")]
public float useTimeSec;
public float altUseTimeSec;
public bool inUse;
// primary (left click)
public abstract void Use();
// secondary (right click)
public abstract void UseAlt();
}
+2
View File
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 72d72769aaaeff0479ea6b811b94d1df
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 83ac1cbbc254d804499b8f2508119340
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+30
View File
@@ -0,0 +1,30 @@
using System.Collections.Generic;
using UnityEngine;
public class MenuController : MonoBehaviour
{
public List<MenuScreen> screens;
public void ShowScreen(string screenName)
{
HideAllScreens();
MenuScreen selScreen = screens.Find(x => x.screenName == screenName);
if (selScreen != null)
{
selScreen.Show();
}
else
{
throw new System.Exception("Screen name was not found in list of screens!");
}
}
public void HideAllScreens()
{
foreach (var screen in screens)
{
screen.Hide();
}
}
}
+2
View File
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 2289f767f0db35c459c4aae4d94b05c5
+16
View File
@@ -0,0 +1,16 @@
using UnityEngine;
public class MenuScreen : MonoBehaviour
{
public string screenName;
public void Show()
{
gameObject.SetActive(true);
}
public void Hide()
{
gameObject.SetActive(false);
}
}
+2
View File
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 3ba23d5f6c337c34caaac9a4d8aab191
+25
View File
@@ -0,0 +1,25 @@
using UnityEngine;
public class MiniMapCam : MonoBehaviour
{
Transform playerTransform;
Transform camHomeTransform;
void LateUpdate()
{
if (playerTransform == null)
{
playerTransform = GameManager.Instance.PlayerController.transform;
}
if (camHomeTransform == null)
{
camHomeTransform = GameManager.Instance.PlayerController.cameraController.playerCamHome;
}
Vector3 newPosition = playerTransform.position;
newPosition.y = transform.position.y;
transform.position = newPosition;
transform.rotation = Quaternion.Euler(90, camHomeTransform.eulerAngles.y, 0);
}
}
+2
View File
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 64af30c5f595a904b9beb633d468cbff
+15
View File
@@ -0,0 +1,15 @@
using UnityEngine;
using UnityEngine.UI;
public class PauseMenu : MonoBehaviour
{
public Button SaveButton;
public Button DeleteSaveButton;
public Button QuitButton;
void Start()
{
SaveButton.onClick.AddListener(SaveSystem.Save);
DeleteSaveButton.onClick.AddListener(SaveSystem.ClearSave);
}
}
+2
View File
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 9657fbe2c0c3ae74b8f542c62a1f38a2
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 6a123f00b4942dc4091340ce72744309
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+30
View File
@@ -0,0 +1,30 @@
using UnityEngine;
// Very simple script, just takes a light on start and slowly fades it to 0
// over the duration specified.
[RequireComponent(typeof(Light))]
public class FadingLight : MonoBehaviour
{
Light lightObj;
public float duration;
public bool isFading;
float timer;
float startIntensity;
void Start()
{
lightObj = GetComponent<Light>();
startIntensity = lightObj.intensity;
}
void Update()
{
timer += Time.deltaTime;
float t = timer / duration;
t = Mathf.Clamp01(t);
lightObj.intensity = Mathf.Lerp(startIntensity, 0, t);
}
}
+2
View File
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 2742aa9b9a50a9d458a4daef485a3956
+33
View File
@@ -0,0 +1,33 @@
using UnityEngine;
public class Tnt : MonoBehaviour
{
public Light explodeLight;
public ParticleSystem explodeParticle;
public float fuseTime;
public float explosionLengthTime;
float timer = 0;
private bool exploded = false;
void Update()
{
timer += Time.deltaTime;
if (!exploded && timer > fuseTime)
{
exploded = true;
explodeLight.gameObject.SetActive(true);
explodeLight.transform.parent = null;
explodeParticle.gameObject.SetActive(true);
explodeParticle.transform.parent = null;
explodeParticle.transform.localScale = new Vector3(0.05f, 0.05f, 0.05f);
explodeParticle.Play();
Destroy(explodeLight.gameObject, explosionLengthTime);
Destroy(explodeParticle.gameObject, explosionLengthTime);
Destroy(gameObject);
}
}
}
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: f876d4c98cbd6c8499fa411ab2468058
+6 -2
View File
@@ -342,6 +342,9 @@ MonoBehaviour:
skyOcclusionIntensityMultiplier: skyOcclusionIntensityMultiplier:
m_OverrideState: 1 m_OverrideState: 1
m_Value: 1 m_Value: 1
worldOffset:
m_OverrideState: 1
m_Value: {x: 0, y: 0, z: 0}
--- !u!114 &-1216621516061285780 --- !u!114 &-1216621516061285780
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 3 m_ObjectHideFlags: 3
@@ -376,6 +379,9 @@ MonoBehaviour:
highQualityFiltering: highQualityFiltering:
m_OverrideState: 1 m_OverrideState: 1
m_Value: 0 m_Value: 0
filter:
m_OverrideState: 1
m_Value: 0
downscale: downscale:
m_OverrideState: 1 m_OverrideState: 1
m_Value: 0 m_Value: 0
@@ -462,8 +468,6 @@ MonoBehaviour:
- {fileID: -6288072647309666549} - {fileID: -6288072647309666549}
- {fileID: 7518938298396184218} - {fileID: 7518938298396184218}
- {fileID: -1410297666881709256} - {fileID: -1410297666881709256}
- {fileID: -7750755424749557576}
- {fileID: -5139089513906902183}
--- !u!114 &853819529557874667 --- !u!114 &853819529557874667
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 3 m_ObjectHideFlags: 3
BIN
View File
Binary file not shown.
+110
View File
@@ -0,0 +1,110 @@
fileFormatVersion: 2
guid: dd94efce2613467429ba62d5e1847e88
ModelImporter:
serializedVersion: 24200
internalIDToNameTable: []
externalObjects: {}
materials:
materialImportMode: 2
materialName: 0
materialSearch: 1
materialLocation: 1
animations:
legacyGenerateAnimations: 4
bakeSimulation: 0
resampleCurves: 1
optimizeGameObjects: 0
removeConstantScaleCurves: 0
motionNodeName:
animationImportErrors:
animationImportWarnings:
animationRetargetingWarnings:
animationDoRetargetingWarnings: 0
importAnimatedCustomProperties: 0
importConstraints: 0
animationCompression: 1
animationRotationError: 0.5
animationPositionError: 0.5
animationScaleError: 0.5
animationWrapMode: 0
extraExposedTransformPaths: []
extraUserProperties: []
clipAnimations: []
isReadable: 0
meshes:
lODScreenPercentages: []
globalScale: 1
meshCompression: 0
addColliders: 0
useSRGBMaterialColor: 1
sortHierarchyByName: 1
importPhysicalCameras: 1
importVisibility: 1
importBlendShapes: 1
importCameras: 1
importLights: 1
nodeNameCollisionStrategy: 1
fileIdsGeneration: 2
swapUVChannels: 0
generateSecondaryUV: 0
useFileUnits: 1
keepQuads: 0
weldVertices: 1
bakeAxisConversion: 0
preserveHierarchy: 0
skinWeightsMode: 0
maxBonesPerVertex: 4
minBoneWeight: 0.001
optimizeBones: 1
generateMeshLods: 0
meshLodGenerationFlags: 0
maximumMeshLod: -1
meshOptimizationFlags: -1
indexFormat: 0
secondaryUVAngleDistortion: 8
secondaryUVAreaDistortion: 15.000001
secondaryUVHardAngle: 88
secondaryUVMarginMethod: 1
secondaryUVMinLightmapResolution: 40
secondaryUVMinObjectScale: 1
secondaryUVPackMargin: 4
useFileScale: 1
strictVertexDataChecks: 0
tangentSpace:
normalSmoothAngle: 60
normalImportMode: 0
tangentImportMode: 3
normalCalculationMode: 4
legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
blendShapeNormalImportMode: 1
normalSmoothingSource: 0
referencedClips: []
importAnimation: 1
humanDescription:
serializedVersion: 3
human: []
skeleton: []
armTwist: 0.5
foreArmTwist: 0.5
upperLegTwist: 0.5
legTwist: 0.5
armStretch: 0.05
legStretch: 0.05
feetSpacing: 0
globalScale: 1
rootMotionBoneName:
hasTranslationDoF: 0
hasExtraRoot: 0
skeletonHasParents: 1
lastHumanDescriptionAvatarSource: {instanceID: 0}
autoGenerateAvatarMappingIfUnspecified: 1
animationType: 2
humanoidOversampling: 1
avatarSetup: 0
addHumanoidExtraRootOnlyWhenUsingAvatar: 1
importBlendShapeDeformPercent: 1
remapMaterialsIfMaterialImportModeIsNone: 0
additionalBone: 0
userData:
assetBundleName:
assetBundleVariant:
+158
View File
@@ -0,0 +1,158 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &-4433539903371689466
MonoBehaviour:
m_ObjectHideFlags: 11
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
m_Name:
m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Editor::UnityEditor.Rendering.Universal.AssetVersion
version: 10
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: TntSmoke
m_Shader: {fileID: 4800000, guid: b7839dad95683814aa64166edc107ae2, type: 3}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords: []
m_InvalidKeywords:
- _FLIPBOOKBLENDING_OFF
m_LightmapFlags: 0
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap:
RenderType: Opaque
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BaseMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
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}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _SpecGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- unity_Lightmaps:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- unity_LightmapsInd:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- unity_ShadowMasks:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _AddPrecomputedVelocity: 0
- _AlphaClip: 0
- _AlphaToMask: 0
- _Blend: 0
- _BlendModePreserveSpecular: 1
- _BlendOp: 0
- _BumpScale: 1
- _CameraFadingEnabled: 0
- _CameraFarFadeDistance: 2
- _CameraNearFadeDistance: 1
- _ClearCoatMask: 0
- _ClearCoatSmoothness: 0
- _ColorMode: 0
- _Cull: 2
- _Cutoff: 0.5
- _DetailAlbedoMapScale: 1
- _DetailNormalMapScale: 1
- _DistortionBlend: 0.5
- _DistortionEnabled: 0
- _DistortionStrength: 1
- _DistortionStrengthScaled: 0
- _DstBlend: 0
- _DstBlendAlpha: 0
- _EmissionEnabled: 0
- _EnvironmentReflections: 1
- _FlipbookBlending: 0
- _FlipbookMode: 0
- _GlossMapScale: 0
- _Glossiness: 0
- _GlossyReflections: 0
- _LightingEnabled: 1
- _Metallic: 0
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.005
- _QueueOffset: 0
- _ReceiveShadows: 1
- _Smoothness: 0.5
- _SmoothnessTextureChannel: 0
- _SoftParticlesEnabled: 0
- _SoftParticlesFarFadeDistance: 1
- _SoftParticlesNearFadeDistance: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _SrcBlendAlpha: 1
- _Surface: 0
- _WorkflowMode: 1
- _XRMotionVectorsPass: 1
- _ZWrite: 1
m_Colors:
- _BaseColor: {r: 1, g: 1, b: 1, a: 1}
- _BaseColorAddSubDiff: {r: 0, g: 0, b: 0, a: 0}
- _CameraFadeParams: {r: 0, g: Infinity, b: 0, a: 0}
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _ColorAddSubDiff: {r: 0, g: 0, b: 0, a: 0}
- _EmissionColor: {r: 1, g: 0.28692925, b: 0.21226418, a: 1}
- _SoftParticleFadeParams: {r: 0, g: 0, b: 0, a: 0}
- _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}
m_BuildTextureStacks: []
m_AllowLocking: 1

Some files were not shown because too many files have changed in this diff Show More