Implement casettes
This commit is contained in:
parent
eb9832e14f
commit
2b95d1f68b
@ -10,8 +10,9 @@ GameObject:
|
||||
m_Component:
|
||||
- component: {fileID: 388935964095823363}
|
||||
- component: {fileID: 388935964095823360}
|
||||
- component: {fileID: 388935964095823361}
|
||||
m_Layer: 0
|
||||
- component: {fileID: 8749723819828979553}
|
||||
- component: {fileID: 7525334960177098028}
|
||||
m_Layer: 13
|
||||
m_Name: Casette
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
@ -46,10 +47,10 @@ Rigidbody:
|
||||
m_AngularDrag: 0.05
|
||||
m_UseGravity: 1
|
||||
m_IsKinematic: 0
|
||||
m_Interpolate: 0
|
||||
m_Interpolate: 1
|
||||
m_Constraints: 0
|
||||
m_CollisionDetection: 0
|
||||
--- !u!114 &388935964095823361
|
||||
--- !u!114 &8749723819828979553
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
@ -58,12 +59,125 @@ MonoBehaviour:
|
||||
m_GameObject: {fileID: 388935964095823366}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: f70b810850590804092bb2c772ea6012, type: 3}
|
||||
m_Script: {fileID: 11500000, guid: df6e90d9f78abce48bed9c6269482e28, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
Quality: {fileID: 0}
|
||||
IgnitePoint: {fileID: 0}
|
||||
Grabbed: 0
|
||||
Clips:
|
||||
- {fileID: 8300000, guid: 2b23e5fe1d3f4ff458b43bc8de2322da, type: 3}
|
||||
- {fileID: 8300000, guid: 9280a563b2aecaf4aa564668354a4198, type: 3}
|
||||
- {fileID: 8300000, guid: d1c7349c608493944ba60257cadee2d5, type: 3}
|
||||
- {fileID: 8300000, guid: 5949c62627e28cb439290ab239ac906a, type: 3}
|
||||
- {fileID: 8300000, guid: a578368d2630ef84bb0d9ef9ed0b61c2, type: 3}
|
||||
--- !u!82 &7525334960177098028
|
||||
AudioSource:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 388935964095823366}
|
||||
m_Enabled: 1
|
||||
serializedVersion: 4
|
||||
OutputAudioMixerGroup: {fileID: -6189427169395524444, guid: 032de345950918c4e89684078c6a7213,
|
||||
type: 2}
|
||||
m_audioClip: {fileID: 0}
|
||||
m_PlayOnAwake: 0
|
||||
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!65 &6986160423568067126
|
||||
BoxCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8521982733029884806}
|
||||
m_Material: {fileID: 0}
|
||||
m_IsTrigger: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 2
|
||||
m_Size: {x: 0.0031601759, y: 0.0019185896, z: 0.00047792346}
|
||||
m_Center: {x: 0, y: -0.00000045137122, z: 0}
|
||||
--- !u!1001 &388935963055561359
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -141,8 +255,19 @@ PrefabInstance:
|
||||
propertyPath: m_Name
|
||||
value: Casette
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -927199367670048503, guid: c261ecab8d490a549a26abb254febca6,
|
||||
type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 13
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents: []
|
||||
m_SourcePrefab: {fileID: 100100000, guid: c261ecab8d490a549a26abb254febca6, type: 3}
|
||||
--- !u!1 &8521982733029884806 stripped
|
||||
GameObject:
|
||||
m_CorrespondingSourceObject: {fileID: -927199367670048503, guid: c261ecab8d490a549a26abb254febca6,
|
||||
type: 3}
|
||||
m_PrefabInstance: {fileID: 388935963055561359}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!4 &4620539269408403861 stripped
|
||||
Transform:
|
||||
m_CorrespondingSourceObject: {fileID: -4216859302048453862, guid: c261ecab8d490a549a26abb254febca6,
|
||||
|
@ -952,6 +952,9 @@ MonoBehaviour:
|
||||
ItemLayer:
|
||||
serializedVersion: 2
|
||||
m_Bits: 1024
|
||||
CasetteLayer:
|
||||
serializedVersion: 2
|
||||
m_Bits: 8192
|
||||
DroppingRaycastMask:
|
||||
serializedVersion: 2
|
||||
m_Bits: 3895
|
||||
|
57
Assets/Scripts/CasettePickup.cs
Normal file
57
Assets/Scripts/CasettePickup.cs
Normal file
@ -0,0 +1,57 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
[RequireComponent(typeof(AudioSource))]
|
||||
public class CasettePickup : MonoBehaviour {
|
||||
public AudioClip[] Clips;
|
||||
public string DisplayPrompt {
|
||||
get {
|
||||
return Playing ? "Queue casette" : "Play casette";
|
||||
}
|
||||
}
|
||||
public bool Playing {
|
||||
get {
|
||||
return Source.isPlaying;
|
||||
}
|
||||
}
|
||||
|
||||
private AudioSource Source;
|
||||
private CasettePickup PreviousInQueue;
|
||||
private int WaitingIndex;
|
||||
private bool Disappear;
|
||||
|
||||
private void Awake() {
|
||||
Source = GetComponent<AudioSource>();
|
||||
CasetteProgress.CasetteCount = Clips.Length;
|
||||
Disappear = false;
|
||||
}
|
||||
|
||||
private void Update() {
|
||||
if (Disappear) {
|
||||
transform.localScale = Vector3.Lerp(transform.localScale, Vector3.zero, 10f * Time.deltaTime);
|
||||
}
|
||||
|
||||
if (PreviousInQueue != null) {
|
||||
if (!PreviousInQueue.Playing) {
|
||||
PreviousInQueue = null;
|
||||
Source.PlayOneShot(Clips[WaitingIndex]);
|
||||
}
|
||||
} else if (CasetteProgress.AllCasettesPlayed && !Playing) {
|
||||
Destroy(gameObject);
|
||||
}
|
||||
}
|
||||
|
||||
public void Play(CasettePickup previous) {
|
||||
int Index = CasetteProgress.PlayNext();
|
||||
if (Index != -1) {
|
||||
Disappear = true;
|
||||
if (previous == null) {
|
||||
Source.PlayOneShot(Clips[Index]);
|
||||
} else {
|
||||
PreviousInQueue = previous;
|
||||
WaitingIndex = Index;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
11
Assets/Scripts/CasettePickup.cs.meta
Normal file
11
Assets/Scripts/CasettePickup.cs.meta
Normal file
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: df6e90d9f78abce48bed9c6269482e28
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
28
Assets/Scripts/CasetteProgress.cs
Normal file
28
Assets/Scripts/CasetteProgress.cs
Normal file
@ -0,0 +1,28 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
public class CasetteProgress : MonoBehaviour {
|
||||
public static int CasetteIndex;
|
||||
public static int CasetteCount;
|
||||
public static bool AllCasettesPlayed {
|
||||
get {
|
||||
return CasetteIndex >= CasetteCount;
|
||||
}
|
||||
}
|
||||
|
||||
private void Start() {
|
||||
CasetteIndex = 0;
|
||||
CasetteCount = 0;
|
||||
}
|
||||
|
||||
public static int PlayNext() {
|
||||
if (!AllCasettesPlayed) {
|
||||
int Index = CasetteIndex;
|
||||
CasetteIndex++;
|
||||
return Index;
|
||||
} else {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
}
|
11
Assets/Scripts/CasetteProgress.cs.meta
Normal file
11
Assets/Scripts/CasetteProgress.cs.meta
Normal file
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: abaf19d90daa02f469221bf25f8e8e91
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -12,6 +12,7 @@ public class ItemGrabber : MonoBehaviour {
|
||||
public CanvasGroup SecondaryIndicator;
|
||||
public Text SecondaryText;
|
||||
public LayerMask ItemLayer;
|
||||
public LayerMask CasetteLayer;
|
||||
public LayerMask DroppingRaycastMask;
|
||||
public float Distance;
|
||||
|
||||
@ -23,6 +24,9 @@ public class ItemGrabber : MonoBehaviour {
|
||||
public Torch Torch;
|
||||
public GameObject NextTorch;
|
||||
|
||||
private CasettePickup PreviousCasette = null;
|
||||
private CasettePickup Casette = null;
|
||||
private float LastCasetteHitTime = -1;
|
||||
private Item LookedAtItem = null;
|
||||
private float LastItemHitTime = -1;
|
||||
|
||||
@ -49,13 +53,25 @@ public class ItemGrabber : MonoBehaviour {
|
||||
LookedAtItem = null;
|
||||
}
|
||||
|
||||
if (Physics.Raycast(From, Direction, out Hit, Distance, CasetteLayer) &&
|
||||
Hit.collider.attachedRigidbody != null) {
|
||||
Casette = Hit.collider.attachedRigidbody.GetComponent<CasettePickup>();
|
||||
LastCasetteHitTime = Time.time;
|
||||
} else if (Time.time - LastCasetteHitTime > 0.1f) {
|
||||
Casette = null;
|
||||
}
|
||||
|
||||
if (Physics.Raycast(From, Direction, out Hit, Distance * 2f, 1 << LayerMask.NameToLayer("Campfire")) &&
|
||||
Hit.collider.attachedRigidbody != null) {
|
||||
Campfire = Hit.collider.attachedRigidbody.GetComponent<Campfire>();
|
||||
CanIgniteTorch |= Campfire != null && TorchableItem != null;
|
||||
}
|
||||
|
||||
if (Campfire == null && LookedAtItem != null && Input.GetButtonDown("Grab")) {
|
||||
if (Casette != null && Input.GetButtonDown("Grab")) {
|
||||
Casette.Play(PreviousCasette);
|
||||
PreviousCasette = Casette;
|
||||
Casette = null;
|
||||
} else if (Campfire == null && LookedAtItem != null && Input.GetButtonDown("Grab")) {
|
||||
LookedAtItem.PickUp(HandTransform);
|
||||
GrabbedItems.Add(LookedAtItem);
|
||||
}
|
||||
@ -118,9 +134,11 @@ public class ItemGrabber : MonoBehaviour {
|
||||
}
|
||||
|
||||
PrimaryIndicator.alpha = Mathf.Lerp(PrimaryIndicator.alpha,
|
||||
LookedAtItem != null || Campfire != null || ThrowableItem != null ? 1 : 0,
|
||||
Casette != null || LookedAtItem != null || Campfire != null || ThrowableItem != null ? 1 : 0,
|
||||
10f * Time.deltaTime);
|
||||
if (Campfire != null && ThrowableItem != null) {
|
||||
if (Casette != null) {
|
||||
PrimaryText.text = Casette.DisplayPrompt;
|
||||
} else if (Campfire != null && ThrowableItem != null) {
|
||||
PrimaryText.text = $"Burn {ThrowableItem.Quality.DisplayName}";
|
||||
} else if (LookedAtItem != null && Campfire == null) {
|
||||
PrimaryText.text = $"Take {LookedAtItem.Quality.DisplayName}";
|
||||
|
@ -22,7 +22,7 @@ TagManager:
|
||||
- Item
|
||||
- Player
|
||||
- Walls for Players
|
||||
-
|
||||
- Casette
|
||||
-
|
||||
-
|
||||
-
|
||||
|
Loading…
Reference in New Issue
Block a user