5 Commits
V1.0 ... V1.1

Author SHA1 Message Date
3aa57df640 Made default sens a playable value 2025-04-30 11:52:00 +01:00
dde1651647 Added main menu 2025-04-30 11:51:29 +01:00
9d8ada0d64 Portals Actually Work 2025-04-30 09:51:58 +01:00
e1be308f05 Added a back renderer to the portal 2025-04-30 09:41:19 +01:00
Pasha Bibko
b86c9f7a14 Improved Timer QOL
Made it start on the player first moving and show on the game HUD.
2025-04-29 21:05:23 +01:00
18 changed files with 2827 additions and 32 deletions

View File

@@ -276,7 +276,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: -79}
m_AnchoredPosition: {x: 0, y: -200}
m_SizeDelta: {x: 160, y: 30}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &4719150856852200805
@@ -353,6 +353,7 @@ RectTransform:
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 3955103952048326661}
- {fileID: 8335740897561854244}
- {fileID: 6793247590988510300}
- {fileID: 6414998190209660209}
- {fileID: 2457658704519817442}
@@ -502,3 +503,82 @@ MonoBehaviour:
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!1 &8883880397071342217
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8335740897561854244}
- component: {fileID: 3941313279583122886}
- component: {fileID: 4448638729554205736}
m_Layer: 5
m_Name: Speed (3)
m_TagString: NoTag
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &8335740897561854244
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8883880397071342217}
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: 5671584535948009389}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: -250}
m_SizeDelta: {x: 160, y: 30}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &3941313279583122886
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8883880397071342217}
m_CullTransparentMesh: 1
--- !u!114 &4448638729554205736
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8883880397071342217}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 0, g: 0, b: 0, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_FontData:
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
m_FontSize: 30
m_FontStyle: 0
m_BestFit: 0
m_MinSize: 0
m_MaxSize: 40
m_Alignment: 4
m_AlignByGeometry: 0
m_RichText: 1
m_HorizontalOverflow: 1
m_VerticalOverflow: 1
m_LineSpacing: 1
m_Text: New Text

View File

@@ -97,7 +97,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 5cfd42fc2ed2f504dae2b9e7095401cf, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Sensitivity: {x: 1200, y: 800}
m_Sensitivity: {x: 12, y: 8}
m_MaxAngle: 85
m_Orientation: {fileID: 0}
m_Tracking: {fileID: 0}

View File

@@ -49,7 +49,9 @@ MonoBehaviour:
m_AngleDif: 0
m_CamDif: 0
m_CameraPrefab: {fileID: 1179287573507601862, guid: 1a28b9e152b1d3d419d1881ea498fcbf, type: 3}
m_PortalRenderer: {fileID: 4162196787169641245}
m_Renderers:
- {fileID: 4162196787169641245}
- {fileID: 4134581380583201958}
m_PlayerPoint: {fileID: 6158405577604730568}
--- !u!65 &5568742943214540714
BoxCollider:
@@ -103,6 +105,89 @@ Transform:
m_Children: []
m_Father: {fileID: 3117384245817137028}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &3792217788487949262
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8495484525370355397}
- component: {fileID: 6225447176941520143}
- component: {fileID: 4134581380583201958}
m_Layer: 12
m_Name: BackRender
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &8495484525370355397
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3792217788487949262}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: -2, z: -0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 2772991262862259612}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &6225447176941520143
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3792217788487949262}
m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &4134581380583201958
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3792217788487949262}
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_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: b8370180ee45f7948b513305ba938a27, 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_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!1 &4525855263416128436
GameObject:
m_ObjectHideFlags: 0
@@ -130,10 +215,11 @@ Transform:
m_GameObject: {fileID: 4525855263416128436}
serializedVersion: 2
m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068}
m_LocalPosition: {x: 0, y: 5, z: 0}
m_LocalPosition: {x: 0, y: 5, z: -0.1}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Children:
- {fileID: 8495484525370355397}
m_Father: {fileID: 3117384245817137028}
m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0}
--- !u!33 &5956259521933674024
@@ -246,7 +332,7 @@ Transform:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7967144210440699741}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
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
@@ -269,7 +355,7 @@ BoxCollider:
m_Bits: 0
m_LayerOverridePriority: 0
m_IsTrigger: 0
m_ProvidesContacts: 0
m_ProvidesContacts: 1
m_Enabled: 1
serializedVersion: 3
m_Size: {x: 10, y: 10, z: 5}

View File

@@ -608,6 +608,17 @@ Transform:
m_CorrespondingSourceObject: {fileID: 1632877289128239282, guid: 403eb740238e6b64690125507aa8e849, type: 3}
m_PrefabInstance: {fileID: 1957750500}
m_PrefabAsset: {fileID: 0}
--- !u!114 &259691000 stripped
MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 4448638729554205736, guid: 04e3e796397021e4a8006d7d49ba6083, type: 3}
m_PrefabInstance: {fileID: 1080427054}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &314221797
GameObject:
m_ObjectHideFlags: 0
@@ -25499,6 +25510,10 @@ PrefabInstance:
propertyPath: m_Name
value: Player
objectReference: {fileID: 0}
- target: {fileID: 8262238277154956783, guid: 403eb740238e6b64690125507aa8e849, type: 3}
propertyPath: m_TimeText
value:
objectReference: {fileID: 259691000}
- target: {fileID: 8262238277154956783, guid: 403eb740238e6b64690125507aa8e849, type: 3}
propertyPath: m_DeadCanvas
value:

2494
Assets/Scenes/MainMenu.unity Normal file

File diff suppressed because it is too large Load Diff

View File

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

View File

@@ -58,8 +58,8 @@ public class CameraController : MonoBehaviour
// Gets the mouse input from the user
Vector2 mouse = new Vector2
(
Input.GetAxisRaw("Mouse X") * Time.deltaTime * m_Sensitivity.x,
Input.GetAxisRaw("Mouse Y") * Time.deltaTime * m_Sensitivity.y
Input.GetAxisRaw("Mouse X") * Time.deltaTime * m_Sensitivity.x * MainMenu.sens,
Input.GetAxisRaw("Mouse Y") * Time.deltaTime * m_Sensitivity.y * MainMenu.sens
);
// Applies the mouse movement to the camera angle

View File

@@ -36,6 +36,16 @@ public partial class PlayerMovement : MonoBehaviour
// Calculates the movement direction
m_MoveDir = (m_Orientation.forward * m_Input.y) + (m_Orientation.right * m_Input.x);
if (m_MoveDir != Vector3.zero && m_StartTime == 0.0f)
{
m_StartTime = Time.time;
}
if (m_StartTime != 0.0f)
{
m_TimeText.text = (Time.time - m_StartTime).ToString("0.00") + " s";
}
//
if (m_OnSlope)
{

View File

@@ -46,6 +46,7 @@ public partial class PlayerMovement : MonoBehaviour
[SerializeField] Canvas m_DeadCanvas;
[SerializeField] Canvas m_CompletedCanvas;
[SerializeField] Text m_CompletedText;
[SerializeField] Text m_TimeText;
[Header("Debug Settings")]
[SerializeField] Text m_SpeedDisplay;
@@ -93,7 +94,7 @@ public partial class PlayerMovement : MonoBehaviour
bool m_IsDead = false;
float m_StartTime;
float m_StartTime = 0.0f;
// Only instance of the player
static PlayerMovement s_Instance;
@@ -108,8 +109,6 @@ public partial class PlayerMovement : MonoBehaviour
// Start is called before the first frame update
private void Start()
{
m_StartTime = Time.time;
//
m_CompletedCanvas.enabled = false;
m_DeadCanvas.enabled = false;

View File

@@ -19,7 +19,7 @@ public class PortalCamera : MonoBehaviour
Vector3 m_Rot;
// Initialistion function for the camera
public void InitCamera(MeshRenderer renderer, PortalManager creator, Vector3 rot)
public void InitCamera(MeshRenderer[] renderers, PortalManager creator, Vector3 rot)
{
// Transfers the passed rotation to be stored within the class
m_Rot = rot;
@@ -42,11 +42,14 @@ public class PortalCamera : MonoBehaviour
// Links the camera to the mesh renderer
m_Camera.targetTexture = m_RenderTexture; // Sets it's camera to display to the render texture instead of the screen
m_RenderMaterial.mainTexture = m_RenderTexture; // Sets the material to use the render texture as it's texture
renderer.material = m_RenderMaterial; // Set's the renderer to use the material
foreach (Renderer renderer in renderers)
{
renderer.material = m_RenderMaterial;
}
}
// Update is called every frame
void Update()
void LateUpdate()
{
// Gets the offset of the player from the display portal
Vector3 offset = m_DisplayPortal.PlayerOffset();
@@ -59,8 +62,6 @@ public class PortalCamera : MonoBehaviour
float angle = Quaternion.Angle(m_DisplayPortal.transform.parent.rotation, m_CapturePortal.transform.parent.rotation);
Quaternion rotDif = Quaternion.AngleAxis(angle, Vector3.up);
Vector3 newCamDir = rotDif * CameraController.Instance().transform.forward;
//Vector3 d = new(m_CapturePortal.CamDif(), 0f, 0f);
//Vector3 d = new(0f, 0f, m_CapturePortal.CamDif());
Vector3 d = new(0f, m_CapturePortal.CamDif(), 0f);
transform.parent.eulerAngles = Quaternion.LookRotation(newCamDir, Vector3.up).eulerAngles + m_Rot + d;
}

View File

@@ -1,3 +1,4 @@
using System.Collections.Generic;
using UnityEngine;
public class PortalManager : MonoBehaviour
@@ -9,7 +10,7 @@ public class PortalManager : MonoBehaviour
[Header("Set References")]
[SerializeField] GameObject m_CameraPrefab;
[SerializeField] MeshRenderer m_PortalRenderer;
[SerializeField] MeshRenderer[] m_Renderers;
[Header("Points")]
[SerializeField] Transform m_PlayerPoint;
@@ -27,8 +28,6 @@ public class PortalManager : MonoBehaviour
public float CamDif() => m_CamDif;
static bool s_TeleportedThisFrame = false;
// Start is called before the first frame update
void Start()
{
@@ -45,19 +44,12 @@ public class PortalManager : MonoBehaviour
m_PortalCamera = cam.GetComponentInChildren<PortalCamera>();
// Initialises the camera so it renders to the portal and not the screen
m_PortalCamera.InitCamera(m_PortalRenderer, this, transform.parent.localEulerAngles * 2.0f);
}
// Updates is called every frame
void Update()
{
// Updates the player position relative to the portal
m_PlayerPoint.position = CameraController.Instance().transform.position;
m_PortalCamera.InitCamera(m_Renderers, this, transform.parent.localEulerAngles * 2.0f);
}
void LateUpdate()
{
s_TeleportedThisFrame = true;
m_PlayerPoint.position = CameraController.Instance().transform.position;
}
// When something enters the portal
@@ -70,7 +62,7 @@ public class PortalManager : MonoBehaviour
Vector3 difference = PlayerMovement.Pos() - transform.position;
// If this is true the player has crossed the portal
if (PlayerMovement.CanGoThroughPortals() && s_TeleportedThisFrame == true)
if (PlayerMovement.CanGoThroughPortals())
{
// Rotates the player
float rotDif = -Quaternion.Angle(transform.rotation, m_OtherManager.transform.rotation) + m_AngleDif;

8
Assets/Scripts/UI.meta Normal file
View File

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

View File

@@ -0,0 +1,66 @@
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class MainMenu : MonoBehaviour
{
[Header("Settings")]
[SerializeField] int m_TransitionFrames;
[Header("References")]
[SerializeField] Camera m_Camera;
[Header("Canvases")]
[SerializeField] Canvas m_StartCanvas;
[SerializeField] Canvas m_OptionsCanvas;
[SerializeField] Canvas m_ControlsCanvas;
[Header("Options References")]
[SerializeField] Text m_SensText;
[SerializeField] Slider m_SensitivitySlider;
public static float sens = 100.0f;
private void Start()
{
m_StartCanvas.enabled = true;
m_ControlsCanvas.enabled = false;
m_OptionsCanvas.enabled = false;
}
public void StartGame() => SceneManager.LoadScene(1);
public void OptionsMenu()
{
m_StartCanvas.enabled = false;
m_ControlsCanvas.enabled = false;
m_OptionsCanvas.enabled = true;
}
public void ControlsMenu()
{
m_StartCanvas.enabled = false;
m_OptionsCanvas.enabled = false;
m_ControlsCanvas.enabled = true;
}
public void StartMenu()
{
m_ControlsCanvas.enabled = false;
m_OptionsCanvas.enabled = false;
m_StartCanvas.enabled = true;
}
private void Update()
{
if (Input.GetKey(KeyCode.Escape))
{
StartMenu();
}
sens = m_SensitivitySlider.value;
m_SensText.text = sens.ToString();
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: a1feb454d15b4714f9e36e541f9eaca7
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -2,6 +2,7 @@
"dependencies": {
"com.unity.collab-proxy": "2.7.1",
"com.unity.feature.development": "1.0.1",
"com.unity.postprocessing": "3.4.0",
"com.unity.probuilder": "5.2.4",
"com.unity.textmeshpro": "3.0.6",
"com.unity.timeline": "1.7.6",

View File

@@ -67,6 +67,15 @@
"dependencies": {},
"url": "https://packages.unity.com"
},
"com.unity.postprocessing": {
"version": "3.4.0",
"depth": 0,
"source": "registry",
"dependencies": {
"com.unity.modules.physics": "1.0.0"
},
"url": "https://packages.unity.com"
},
"com.unity.probuilder": {
"version": "5.2.4",
"depth": 0,

View File

@@ -5,6 +5,9 @@ EditorBuildSettings:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Scenes:
- enabled: 1
path: Assets/Scenes/MainMenu.unity
guid: e22ef2f7c91cf3c4c9aff93d62cc2f5b
- enabled: 1
path: Assets/Scenes/ActualLevel1.unity
guid: 4c98b5cb307000847b781a1a2cda472e

View File

@@ -834,7 +834,20 @@ PlayerSettings:
webGLMemoryGeometricGrowthStep: 0.2
webGLMemoryGeometricGrowthCap: 96
webGLPowerPreference: 2
scriptingDefineSymbols: {}
scriptingDefineSymbols:
Android: UNITY_POST_PROCESSING_STACK_V2
EmbeddedLinux: UNITY_POST_PROCESSING_STACK_V2
GameCoreXboxOne: UNITY_POST_PROCESSING_STACK_V2
Nintendo Switch: UNITY_POST_PROCESSING_STACK_V2
PS4: UNITY_POST_PROCESSING_STACK_V2
PS5: UNITY_POST_PROCESSING_STACK_V2
QNX: UNITY_POST_PROCESSING_STACK_V2
Stadia: UNITY_POST_PROCESSING_STACK_V2
Standalone: UNITY_POST_PROCESSING_STACK_V2
VisionOS: UNITY_POST_PROCESSING_STACK_V2
WebGL: UNITY_POST_PROCESSING_STACK_V2
XboxOne: UNITY_POST_PROCESSING_STACK_V2
tvOS: UNITY_POST_PROCESSING_STACK_V2
additionalCompilerArguments: {}
platformArchitecture: {}
scriptingBackend: {}