game(effects): restructure files
This commit is contained in:
parent
84bdbd9667
commit
4011266881
12 changed files with 45 additions and 274 deletions
|
@ -1,8 +0,0 @@
|
||||||
fileFormatVersion: 2
|
|
||||||
guid: c23c9f7c225f28546ad748b02e751f1d
|
|
||||||
folderAsset: yes
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
|
@ -1,48 +0,0 @@
|
||||||
/*
|
|
||||||
Author: Wai Lam
|
|
||||||
Date: 6/2/25
|
|
||||||
Description: Make the camera shake
|
|
||||||
*/
|
|
||||||
using System.Collections;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using UnityEngine;
|
|
||||||
|
|
||||||
public class Camerashake : MonoBehaviour
|
|
||||||
{
|
|
||||||
[SerializeField] private float shakeMagnitude = 0.05f;
|
|
||||||
[SerializeField] private bool isShaking = false; // Toggle shaking on/off
|
|
||||||
|
|
||||||
private Transform cameraOffsetTransform;
|
|
||||||
private Vector3 originalLocalPos;
|
|
||||||
|
|
||||||
private void Start()
|
|
||||||
{
|
|
||||||
cameraOffsetTransform = transform; // Attach this script to Camera Offset
|
|
||||||
originalLocalPos = cameraOffsetTransform.localPosition;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void Update()
|
|
||||||
{
|
|
||||||
if (isShaking)
|
|
||||||
{
|
|
||||||
cameraOffsetTransform.localPosition = originalLocalPos + (Vector3)Random.insideUnitSphere * shakeMagnitude;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
cameraOffsetTransform.localPosition = originalLocalPos; // Reset when not shaking
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Public methods to enable/disable shaking dynamically
|
|
||||||
public void StartShaking(float magnitude = -1)
|
|
||||||
{
|
|
||||||
if (magnitude > 0) shakeMagnitude = magnitude;
|
|
||||||
isShaking = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void StopShaking()
|
|
||||||
{
|
|
||||||
isShaking = false;
|
|
||||||
cameraOffsetTransform.localPosition = originalLocalPos; // Ensure reset
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,11 +0,0 @@
|
||||||
fileFormatVersion: 2
|
|
||||||
guid: 829050d920c070f4783f067cdcb74217
|
|
||||||
MonoImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
defaultReferences: []
|
|
||||||
executionOrder: 0
|
|
||||||
icon: {instanceID: 0}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
|
@ -1,44 +0,0 @@
|
||||||
%YAML 1.1
|
|
||||||
%TAG !u! tag:unity3d.com,2011:
|
|
||||||
--- !u!114 &11400000
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
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: d7fd9488000d3734a9e00ee676215985, type: 3}
|
|
||||||
m_Name: Viginettevolume Profile
|
|
||||||
m_EditorClassIdentifier:
|
|
||||||
components:
|
|
||||||
- {fileID: 470894040277958869}
|
|
||||||
--- !u!114 &470894040277958869
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 3
|
|
||||||
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: 899c54efeace73346a0a16faa3afe726, type: 3}
|
|
||||||
m_Name: Vignette
|
|
||||||
m_EditorClassIdentifier:
|
|
||||||
active: 1
|
|
||||||
color:
|
|
||||||
m_OverrideState: 1
|
|
||||||
m_Value: {r: 0, g: 0, b: 0, a: 1}
|
|
||||||
center:
|
|
||||||
m_OverrideState: 1
|
|
||||||
m_Value: {x: 0.5, y: 0.5}
|
|
||||||
intensity:
|
|
||||||
m_OverrideState: 1
|
|
||||||
m_Value: 1
|
|
||||||
smoothness:
|
|
||||||
m_OverrideState: 1
|
|
||||||
m_Value: 0.352
|
|
||||||
rounded:
|
|
||||||
m_OverrideState: 1
|
|
||||||
m_Value: 0
|
|
|
@ -1,8 +0,0 @@
|
||||||
fileFormatVersion: 2
|
|
||||||
guid: 655125311f4fc2048bcc12ddf6c49723
|
|
||||||
NativeFormatImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
mainObjectFileID: 11400000
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
|
@ -1,44 +0,0 @@
|
||||||
%YAML 1.1
|
|
||||||
%TAG !u! tag:unity3d.com,2011:
|
|
||||||
--- !u!114 &11400000
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
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: d7fd9488000d3734a9e00ee676215985, type: 3}
|
|
||||||
m_Name: colordistortion Profile
|
|
||||||
m_EditorClassIdentifier:
|
|
||||||
components:
|
|
||||||
- {fileID: 2076673937229531157}
|
|
||||||
--- !u!114 &2076673937229531157
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 3
|
|
||||||
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: 66f335fb1ffd8684294ad653bf1c7564, type: 3}
|
|
||||||
m_Name: ColorAdjustments
|
|
||||||
m_EditorClassIdentifier:
|
|
||||||
active: 1
|
|
||||||
postExposure:
|
|
||||||
m_OverrideState: 1
|
|
||||||
m_Value: 0
|
|
||||||
contrast:
|
|
||||||
m_OverrideState: 1
|
|
||||||
m_Value: 1.47
|
|
||||||
colorFilter:
|
|
||||||
m_OverrideState: 1
|
|
||||||
m_Value: {r: 0.9647059, g: 0.98039216, b: 1, a: 1}
|
|
||||||
hueShift:
|
|
||||||
m_OverrideState: 1
|
|
||||||
m_Value: 87
|
|
||||||
saturation:
|
|
||||||
m_OverrideState: 1
|
|
||||||
m_Value: 67
|
|
|
@ -1,8 +0,0 @@
|
||||||
fileFormatVersion: 2
|
|
||||||
guid: de50934a2e98f5940b4e2e5c8f0a1e49
|
|
||||||
NativeFormatImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
mainObjectFileID: 11400000
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
45
Game/Assets/Scripts/CameraShake.cs
Normal file
45
Game/Assets/Scripts/CameraShake.cs
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
/*
|
||||||
|
* Author: Wai Lam
|
||||||
|
* Date: 6/2/25
|
||||||
|
* Description: Make the camera shake
|
||||||
|
*/
|
||||||
|
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
public class CameraShake : MonoBehaviour
|
||||||
|
{
|
||||||
|
[SerializeField] private float shakeMagnitude = 0.05f;
|
||||||
|
[SerializeField] private bool isShaking; // Toggle shaking on/off
|
||||||
|
|
||||||
|
private Transform _cameraOffsetTransform;
|
||||||
|
private Vector3 _originalLocalPos;
|
||||||
|
|
||||||
|
private void Start()
|
||||||
|
{
|
||||||
|
_cameraOffsetTransform = transform; // Attach this script to Camera Offset
|
||||||
|
_originalLocalPos = _cameraOffsetTransform.localPosition;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Update()
|
||||||
|
{
|
||||||
|
if (isShaking)
|
||||||
|
_cameraOffsetTransform.localPosition = _originalLocalPos + Random.insideUnitSphere * shakeMagnitude;
|
||||||
|
else
|
||||||
|
_cameraOffsetTransform.localPosition = _originalLocalPos; // Reset when not shaking
|
||||||
|
}
|
||||||
|
|
||||||
|
// Public methods to enable/disable shaking dynamically
|
||||||
|
// ReSharper disable once UnusedMember.Global
|
||||||
|
public void StartShaking(float magnitude = -1)
|
||||||
|
{
|
||||||
|
if (magnitude > 0) shakeMagnitude = magnitude;
|
||||||
|
isShaking = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ReSharper disable once UnusedMember.Global
|
||||||
|
public void StopShaking()
|
||||||
|
{
|
||||||
|
isShaking = false;
|
||||||
|
_cameraOffsetTransform.localPosition = _originalLocalPos; // Ensure reset
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,46 +0,0 @@
|
||||||
/*
|
|
||||||
Author: Wai Lam
|
|
||||||
Date: 6/2/25
|
|
||||||
Description: UI to follow camera with a slight delay
|
|
||||||
*/
|
|
||||||
using System.Collections;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using UnityEngine;
|
|
||||||
|
|
||||||
public class Followplayercam : MonoBehaviour
|
|
||||||
{
|
|
||||||
|
|
||||||
public Transform target; // Usually the Main Camera (XR Rig's Head)
|
|
||||||
|
|
||||||
|
|
||||||
public float followSpeed = 5f; // How quickly it follows the target
|
|
||||||
public Vector3 offset = new Vector3(0, -0.2f, 1.5f); // Position offset
|
|
||||||
public bool followRotation = true; // Toggle for rotating with the head
|
|
||||||
|
|
||||||
public float maxPitchAngle = 30f; // Limits how much the panel tilts up/down
|
|
||||||
|
|
||||||
private void LateUpdate()
|
|
||||||
{
|
|
||||||
if (target == null) return;
|
|
||||||
|
|
||||||
// Smooth Position Follow
|
|
||||||
Vector3 desiredPosition = target.position + target.TransformDirection(offset);
|
|
||||||
transform.position = Vector3.Lerp(transform.position, desiredPosition, Time.deltaTime * followSpeed);
|
|
||||||
|
|
||||||
// Smooth Rotation Follow (Yaw + Pitch)
|
|
||||||
if (followRotation)
|
|
||||||
{
|
|
||||||
// Capture target's full rotation
|
|
||||||
Vector3 targetEulerAngles = target.eulerAngles;
|
|
||||||
|
|
||||||
// Handle Pitch (X-axis) - Clamp to avoid extreme tilting
|
|
||||||
float pitch = targetEulerAngles.x;
|
|
||||||
if (pitch > 180) pitch -= 360; // Convert to -180 to 180 range
|
|
||||||
pitch = Mathf.Clamp(pitch, -maxPitchAngle, maxPitchAngle);
|
|
||||||
|
|
||||||
// Apply Yaw (Y-axis) and Pitch (X-axis), keep Roll (Z-axis) at 0
|
|
||||||
Quaternion desiredRotation = Quaternion.Euler(pitch, targetEulerAngles.y, 0);
|
|
||||||
transform.rotation = Quaternion.Slerp(transform.rotation, desiredRotation, Time.deltaTime * followSpeed);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,46 +0,0 @@
|
||||||
using UnityEngine;
|
|
||||||
using UnityEngine.XR.Interaction.Toolkit;
|
|
||||||
|
|
||||||
public class RubbishBin : MonoBehaviour
|
|
||||||
{
|
|
||||||
private UnityEngine.XR.Interaction.Toolkit.Interactors.XRSocketInteractor socket;
|
|
||||||
|
|
||||||
private void Start()
|
|
||||||
{
|
|
||||||
socket = GetComponent<UnityEngine.XR.Interaction.Toolkit.Interactors.XRSocketInteractor>();
|
|
||||||
|
|
||||||
if (socket == null)
|
|
||||||
{
|
|
||||||
Debug.LogError("XRSocketInteractor component is missing from the rubbish bin!");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
socket.selectEntered.AddListener(OnTrashPlaced);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void OnTrashPlaced(SelectEnterEventArgs args)
|
|
||||||
{
|
|
||||||
UnityEngine.XR.Interaction.Toolkit.Interactables.XRBaseInteractable trash = (UnityEngine.XR.Interaction.Toolkit.Interactables.XRBaseInteractable)args.interactableObject;
|
|
||||||
|
|
||||||
if (trash != null)
|
|
||||||
{
|
|
||||||
Debug.Log($"{trash.gameObject.name} was placed in the rubbish bin and destroyed.");
|
|
||||||
Destroy(trash.gameObject);
|
|
||||||
|
|
||||||
// Add haptic feedback if using a VR controller
|
|
||||||
if (args.interactorObject is UnityEngine.XR.Interaction.Toolkit.Interactors.XRBaseInputInteractor controller)
|
|
||||||
{
|
|
||||||
controller.SendHapticImpulse(0.7f, 0.2f);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void OnDestroy()
|
|
||||||
{
|
|
||||||
if (socket != null)
|
|
||||||
{
|
|
||||||
socket.selectEntered.RemoveListener(OnTrashPlaced);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,11 +0,0 @@
|
||||||
fileFormatVersion: 2
|
|
||||||
guid: b3d5a817584b84da0a08814feb482587
|
|
||||||
MonoImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
defaultReferences: []
|
|
||||||
executionOrder: 0
|
|
||||||
icon: {instanceID: 0}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
Loading…
Add table
Reference in a new issue