Compare commits

...

5 Commits

Author SHA1 Message Date
Dylon 0063735802 Add explodable sphere 2026-07-16 19:54:01 -05:00
Dylon 25236e29e6 added new highpolt testing map 2026-07-16 19:05:57 -05:00
trey 16342f1ff4 add explodable script 2026-07-15 21:23:59 -05:00
trey 2715ba7a86 save canvas prefab 2026-07-08 21:13:59 -05:00
trey 778653994d add world map and fast travel 2026-07-08 21:06:57 -05:00
20 changed files with 12244 additions and 2383 deletions
+1349 -1
View File
File diff suppressed because it is too large Load Diff
Binary file not shown.
+110
View File
@@ -0,0 +1,110 @@
fileFormatVersion: 2
guid: 6c111ce829d1706468fa324e2283ab11
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:
+17
View File
@@ -0,0 +1,17 @@
using UnityEngine;
public class FastTravelIcon : MonoBehaviour
{
public Transform TravelLocation;
TeleportHandler TeleportHandler;
private void Start()
{
TeleportHandler = GameObject.FindWithTag("Player").GetComponent<TeleportHandler>();
}
public void GoToLocation()
{
TeleportHandler.FastTravel(TravelLocation, true);
}
}
+2
View File
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: c3711c2e3d35fde4c8fd02cebc72979d
+96
View File
@@ -4926,6 +4926,100 @@ ParticleSystemRenderer:
m_MeshWeighting1: 1 m_MeshWeighting1: 1
m_MeshWeighting2: 1 m_MeshWeighting2: 1
m_MeshWeighting3: 1 m_MeshWeighting3: 1
--- !u!1 &6363008927783646894
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3726223533882090415}
- component: {fileID: 3526635589839092049}
- component: {fileID: 7545598716694529264}
- component: {fileID: 7668621773188834713}
m_Layer: 0
m_Name: ExplodeRadius
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 0
--- !u!4 &3726223533882090415
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6363008927783646894}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 18.43488, y: 18.43488, z: 18.43488}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 6754763150105653226}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!135 &3526635589839092049
SphereCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6363008927783646894}
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_IsTrigger: 1
m_ProvidesContacts: 0
m_Enabled: 1
serializedVersion: 3
m_Radius: 0.5
m_Center: {x: 0, y: 0, z: 0}
--- !u!114 &7545598716694529264
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6363008927783646894}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fcf160d0f430fff438a4e57b70f778b2, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::Explosion
--- !u!54 &7668621773188834713
Rigidbody:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6363008927783646894}
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: 0
m_IsKinematic: 0
m_Interpolate: 0
m_Constraints: 0
m_CollisionDetection: 0
--- !u!1 &7529463216777598777 --- !u!1 &7529463216777598777
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -4964,6 +5058,7 @@ Transform:
- {fileID: 2953567605728542920} - {fileID: 2953567605728542920}
- {fileID: 6184526720724378978} - {fileID: 6184526720724378978}
- {fileID: 4002096401500763546} - {fileID: 4002096401500763546}
- {fileID: 3726223533882090415}
m_Father: {fileID: 0} m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &8008322410806594511 --- !u!33 &8008322410806594511
@@ -5087,6 +5182,7 @@ MonoBehaviour:
m_EditorClassIdentifier: Assembly-CSharp::Tnt m_EditorClassIdentifier: Assembly-CSharp::Tnt
explodeLight: {fileID: 5338768621936571555} explodeLight: {fileID: 5338768621936571555}
explodeParticle: {fileID: 5366483297162523608} explodeParticle: {fileID: 5366483297162523608}
explosion: {fileID: 7545598716694529264}
fuseTime: 2 fuseTime: 2
explosionLengthTime: 0.2 explosionLengthTime: 0.2
--- !u!1 &8211024835675607581 --- !u!1 &8211024835675607581
+34
View File
@@ -0,0 +1,34 @@
using UnityEngine;
public class MapPlayerIcon : MonoBehaviour
{
public Vector3 RealMapBottomRight;
public Vector3 RealMapTopLeft;
RectTransform MapTransform;
RectTransform PlayerIconTransform;
void Start()
{
PlayerIconTransform = GetComponent<RectTransform>();
MapTransform = PlayerIconTransform.parent.GetComponent<RectTransform>();
}
// Update is called once per frame
void Update()
{
Vector3 playerPos = GameManager.Instance.PlayerController.transform.position;
float worldMinX = RealMapTopLeft.x;
float worldMaxX = RealMapBottomRight.x;
float worldMinZ = RealMapBottomRight.z;
float worldMaxZ = RealMapTopLeft.z;
// translate player position to percentage of map for x and y
float normalizedX = Mathf.InverseLerp(worldMinX, worldMaxX, playerPos.x);
float normalizedY = Mathf.InverseLerp(worldMinZ, worldMaxZ, playerPos.z);
// anchor is 0, subtract 0.5 for accurate coords
PlayerIconTransform.anchoredPosition = new Vector2((normalizedX - 0.5f) * MapTransform.rect.width, (normalizedY -0.5f) * MapTransform.rect.height);
}
}
+2
View File
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: f08acec5e7dc5004a9b3427a8e19b5f4
File diff suppressed because it is too large Load Diff
+32 -17
View File
@@ -43,23 +43,7 @@ void Update()
// TODO: Move input detection somewhere else // TODO: Move input detection somewhere else
if (Input.GetKeyDown(KeyCode.Escape)) if (Input.GetKeyDown(KeyCode.Escape))
{ {
if (!paused) TogglePause();
{
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)
@@ -86,6 +70,27 @@ void Update()
DoMovement(); DoMovement();
} }
public void TogglePause()
{
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;
}
#region Movement Calculation/Input Processing #region Movement Calculation/Input Processing
/// <summary> /// <summary>
/// If player presses space, jump /// If player presses space, jump
@@ -384,6 +389,16 @@ public void CharacterControllerMove(Vector3 movement)
characterController.Move(movement); characterController.Move(movement);
} }
/// <summary>
/// Set the character controller's position
/// </summary>
public void CharacterControllerSetPosition(Vector3 pos)
{
characterController.enabled = false;
transform.position = pos;
characterController.enabled = true;
}
/// <summary> /// <summary>
/// Auto-walk the character in the specified direction. Uses character's walk /// Auto-walk the character in the specified direction. Uses character's walk
/// speed and camera rotation (per-frame) /// speed and camera rotation (per-frame)
@@ -13,6 +13,19 @@ private void Start()
playerController = GetComponent<PlayerController>(); playerController = GetComponent<PlayerController>();
} }
/// <summary>
/// Triggers the fast travel coroutine
/// </summary>
public void FastTravel(Transform position, bool isPaused)
{
if (isPaused)
{
GameManager.Instance.PlayerController.TogglePause();
}
StartCoroutine(FastTravelCoroutine(position));
}
/// <summary> /// <summary>
/// Triggers the room entrance coroutine, only works if the character is not controllable (keeps from double transitioning) /// Triggers the room entrance coroutine, only works if the character is not controllable (keeps from double transitioning)
/// </summary> /// </summary>
@@ -74,4 +87,41 @@ IEnumerator EnterRoomCoroutine(RoomDoor door)
playerController.SetCharacterControl(true); playerController.SetCharacterControl(true);
} }
/// <summary>
/// Handle teleportation and timing for fast travel
/// </summary>
IEnumerator FastTravelCoroutine(Transform location)
{
float fadeDuration = 0.2f; // how long to fade to/from black
float fadeTime = 0;
Color blackScreenColor = Color.black;
playerController.SetCharacterControl(false);
while (fadeTime < fadeDuration)
{
blackScreenColor.a = Mathf.Lerp(0, 1, fadeTime / fadeDuration);
GameManager.Instance.BlackScreen.color = blackScreenColor;
fadeTime += Time.deltaTime;
yield return null;
}
fadeTime = 0;
playerController.CharacterControllerSetPosition(location.position);
while (fadeTime < fadeDuration)
{
blackScreenColor.a = Mathf.Lerp(1, 0, fadeTime / fadeDuration);
GameManager.Instance.BlackScreen.color = blackScreenColor;
fadeTime += Time.deltaTime;
yield return null;
}
fadeTime = 0;
yield return new WaitForSeconds(0.2f);
playerController.SetCharacterControl(true);
}
} }
+12 -1
View File
@@ -2,12 +2,23 @@
public class BurriedItem : Diggable public class BurriedItem : Diggable
{ {
public GameObject ItemToSpawn; // Spawnpoint is optional, will spawn at location of dig spot, translated up
// on y-axis
public Transform Spawnpoint; public Transform Spawnpoint;
public GameObject ItemToSpawn;
public override void Dig() public override void Dig()
{
if (Spawnpoint == null)
{
Vector3 newPos = new Vector3(transform.position.x, transform.position.y + 0.2f, transform.position.z);
Instantiate(ItemToSpawn, newPos, transform.rotation, null);
}
else
{ {
Instantiate(ItemToSpawn, Spawnpoint.position, Spawnpoint.rotation, null); Instantiate(ItemToSpawn, Spawnpoint.position, Spawnpoint.rotation, null);
}
Destroy(gameObject); Destroy(gameObject);
} }
} }
@@ -0,0 +1,34 @@
using UnityEngine;
// Put this on things that will explode when they enter the collision trigger
// an Explosion script
public class Explodable : MonoBehaviour
{
// Light is optional (only if you want the exploded object to create light)
public Light explodeLight;
public ParticleSystem explodeParticle;
public float explosionLengthTime;
public void Explode()
{
if (explodeLight != null)
{
explodeLight.gameObject.SetActive(true);
explodeLight.transform.parent = null;
Destroy(explodeLight.gameObject, explosionLengthTime);
}
if (explodeParticle != null)
{
explodeParticle.gameObject.SetActive(true);
explodeParticle.transform.parent = null;
//explodeParticle.transform.localScale = new Vector3(0.05f, 0.05f, 0.05f);
explodeParticle.Play();
Destroy(explodeParticle.gameObject, explosionLengthTime);
}
Destroy(gameObject);
}
}
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 0c0bbb84f48543046b86f073995c09b1
@@ -0,0 +1,18 @@
using UnityEngine;
// Put this on an empty game object with a trigger collider. Anything inside of this
// trigger collider with an Explodable script will explode
public class Explosion : MonoBehaviour
{
private void OnTriggerEnter(Collider other)
{
if (other != null)
{
Explodable explodable = other.GetComponent<Explodable>();
if (explodable != null)
{
explodable.Explode();
}
}
}
}
@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: fcf160d0f430fff438a4e57b70f778b2
@@ -15,8 +15,12 @@ public class Talkable : Interactable
public void Start() public void Start()
{ {
voice = GetComponent<DialogueVoice>(); voice = GetComponent<DialogueVoice>();
if (talkIndicator != null)
{
talkIndicator.SetActive(false); talkIndicator.SetActive(false);
} }
}
void DetermineDialogue() void DetermineDialogue()
{ {
@@ -90,17 +94,27 @@ public override void Interact()
else else
GameManager.Instance.DialogueManager.DisplayNextSentence(); GameManager.Instance.DialogueManager.DisplayNextSentence();
if (talkIndicator != null)
{
talkIndicator.SetActive(false); talkIndicator.SetActive(false);
} }
}
public override void MoveInsideRange() public override void MoveInsideRange()
{
if (talkIndicator != null)
{ {
talkIndicator.SetActive(true); talkIndicator.SetActive(true);
} }
}
public override void MoveOutsideRange() public override void MoveOutsideRange()
{ {
GameManager.Instance.DialogueManager.EndDialogue(); GameManager.Instance.DialogueManager.EndDialogue();
if (talkIndicator != null)
{
talkIndicator.SetActive(false); talkIndicator.SetActive(false);
} }
}
} }
+4
View File
@@ -4,6 +4,7 @@ public class Tnt : MonoBehaviour
{ {
public Light explodeLight; public Light explodeLight;
public ParticleSystem explodeParticle; public ParticleSystem explodeParticle;
public Explosion explosion;
public float fuseTime; public float fuseTime;
public float explosionLengthTime; public float explosionLengthTime;
@@ -17,6 +18,8 @@ void Update()
if (!exploded && timer > fuseTime) if (!exploded && timer > fuseTime)
{ {
exploded = true; exploded = true;
explosion.gameObject.SetActive(true);
explosion.transform.parent = null;
explodeLight.gameObject.SetActive(true); explodeLight.gameObject.SetActive(true);
explodeLight.transform.parent = null; explodeLight.transform.parent = null;
explodeParticle.gameObject.SetActive(true); explodeParticle.gameObject.SetActive(true);
@@ -26,6 +29,7 @@ void Update()
Destroy(explodeLight.gameObject, explosionLengthTime); Destroy(explodeLight.gameObject, explosionLengthTime);
Destroy(explodeParticle.gameObject, explosionLengthTime); Destroy(explodeParticle.gameObject, explosionLengthTime);
Destroy(explosion.gameObject, 0.1f);
Destroy(gameObject); Destroy(gameObject);
} }
BIN
View File
Binary file not shown.
+117
View File
@@ -0,0 +1,117 @@
fileFormatVersion: 2
guid: ff5af43c5cbc5064d90c8078a8b2e90a
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 13
mipmaps:
mipMapMode: 0
enableMipMap: 1
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 0
wrapV: 0
wrapW: 0
nPOTScale: 1
lightmap: 0
compressionQuality: 50
spriteMode: 0
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 0
spriteTessellationDetail: -1
textureType: 0
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 4
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 4
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
customData:
physicsShape: []
bones: []
spriteID:
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spriteCustomMetadata:
entries: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant: