SoundGenerator Puzzle Section WIP

Started on the sound generator section of the soundbird puzzle, plus organized folders.
This commit is contained in:
2025-09-22 14:28:01 +02:00
parent 2923ba0851
commit 322bd5377d
29 changed files with 1382 additions and 31 deletions

View File

@@ -0,0 +1,186 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &277562128272848195
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 249029427890415945}
- component: {fileID: 8669923946467467544}
m_Layer: 0
m_Name: GardenerChaseState
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &249029427890415945
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 277562128272848195}
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: 3773641007251837342}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &8669923946467467544
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 277562128272848195}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: eaefd3d5a2a864ca5b5d9ec5f2a7040f, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &5634601970195484129
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 5969249088313380091}
- component: {fileID: 8741941670841680830}
m_Layer: 0
m_Name: GardenerIdleState
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &5969249088313380091
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5634601970195484129}
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: 3773641007251837342}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &8741941670841680830
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5634601970195484129}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: eaefd3d5a2a864ca5b5d9ec5f2a7040f, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &7821713087316151254
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3773641007251837342}
- component: {fileID: 3270057320425534415}
- component: {fileID: 8244548860977619315}
- component: {fileID: 3901496808324947611}
m_Layer: 0
m_Name: Gardener
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &3773641007251837342
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7821713087316151254}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 35.9931, y: 1.21847, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 5969249088313380091}
- {fileID: 249029427890415945}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &3270057320425534415
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7821713087316151254}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 55938fb1577dd4ad3af7e994048c86f6, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!114 &8244548860977619315
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7821713087316151254}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 9e0b24e2f2ad54cc09940c320ed3cf4b, type: 3}
m_Name:
m_EditorClassIdentifier:
defaultState: {fileID: 0}
currentState: {fileID: 0}
_unityEventsFolded: 0
verbose: 0
allowReentry: 0
returnToDefaultOnDisable: 1
OnStateExited:
m_PersistentCalls:
m_Calls: []
OnStateEntered:
m_PersistentCalls:
m_Calls: []
OnFirstStateEntered:
m_PersistentCalls:
m_Calls: []
OnFirstStateExited:
m_PersistentCalls:
m_Calls: []
OnLastStateEntered:
m_PersistentCalls:
m_Calls: []
OnLastStateExited:
m_PersistentCalls:
m_Calls: []
--- !u!114 &3901496808324947611
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7821713087316151254}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4ad080e6ca3114e4e96ccc33655d3dff, type: 3}
m_Name:
m_EditorClassIdentifier:

View File

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

View File

@@ -0,0 +1,26 @@
using System.Security.Cryptography.X509Certificates;
using Pixelplacement;
using UnityEngine;
public class GardenerBehaviour : MonoBehaviour
{
private StateMachine stateMachineRef;
// Start is called once before the first execution of Update after the MonoBehaviour is created
void Start()
{
stateMachineRef = GetComponent<StateMachine>();
}
// Update is called once per frame
void Update()
{
}
public void stateSwitch (string StateName)
{
Debug.Log("State Switch to: " + StateName);
stateMachineRef.ChangeState(StateName);
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 4ad080e6ca3114e4e96ccc33655d3dff

View File

@@ -0,0 +1,29 @@
using UnityEngine;
using Pixelplacement;
public class LawnMowerBehaviour : MonoBehaviour
{
private StateMachine stateMachineRef;
// Start is called once before the first execution of Update after the MonoBehaviour is created
void Start()
{
stateMachineRef = GetComponent<StateMachine>();
}
// Update is called once per frame
void Update()
{
}
public void mowerTouched()
{
Debug.Log("Mower Touched");
}
public void stateSwitch(string StateName)
{
Debug.Log("State Switch to: " + StateName);
stateMachineRef.ChangeState(StateName);
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 9fba2c868971b20439aaea06a939d8e7

View File

@@ -0,0 +1,152 @@
using UnityEngine;
using Pixelplacement;
public class LawnMowerChaseBehaviour : MonoBehaviour
{
public Spline ChaseSpline;
public Transform LawnMowerObject;
public float chaseDuration;
public float chaseDelay;
[Range(0, 1)] public float startPercentage; // Exposed in Inspector
private const float AnchorThreshold = 0.05f;
private bool _wasAtStart = false;
private bool _wasAtEnd = false;
// For initial tween tracking
private bool _initialTweenActive = true;
private float _initialTargetAnchor = 1f;
//Reference to the gardener's gameobject
public GameObject gardenerRef = null;
public Animator gardenerAnimator = null;
public bool gardenerChasing = true;
void Start()
{
LawnMowerObject.position = ChaseSpline.GetPosition(startPercentage);
float distanceToStart = Mathf.Abs(startPercentage - 0f);
float distanceToEnd = Mathf.Abs(startPercentage - 1f);
if (distanceToStart < distanceToEnd)
{
// Tween from startPercentage to 1
_initialTargetAnchor = 1f;
Tween.Spline(
ChaseSpline,
LawnMowerObject,
startPercentage,
1,
false,
chaseDuration * (1 - startPercentage),
chaseDelay,
Tween.EaseInOut,
Tween.LoopType.None
);
}
else
{
// Tween from startPercentage to 0
_initialTargetAnchor = 0f;
Tween.Spline(
ChaseSpline,
LawnMowerObject,
startPercentage,
0,
false,
chaseDuration * startPercentage,
chaseDelay,
Tween.EaseInOut,
Tween.LoopType.None
);
}
_initialTweenActive = true;
}
void Update()
{
float percentage = ChaseSpline.ClosestPoint(LawnMowerObject.position);
// Handle initial tween completion
if (_initialTweenActive)
{
if (Mathf.Abs(percentage - _initialTargetAnchor) <= AnchorThreshold)
{
// Start ping-pong tween between extremes
StartPingPongTween(_initialTargetAnchor, 1f - _initialTargetAnchor);
_initialTweenActive = false;
}
return; // Don't process flip logic until ping-pong starts
}
// Detect start anchor
if (percentage <= AnchorThreshold)
{
if (!_wasAtStart)
{
flipSprite();
_wasAtStart = true;
_wasAtEnd = false;
}
}
// Detect end anchor
else if (percentage >= 1f - AnchorThreshold)
{
if (!_wasAtEnd)
{
flipSprite();
_wasAtEnd = true;
_wasAtStart = false;
}
}
else
{
_wasAtStart = false;
_wasAtEnd = false;
}
}
private void StartPingPongTween(float from, float to)
{
Tween.Spline(
ChaseSpline,
LawnMowerObject,
from,
to,
false,
chaseDuration,
0,
Tween.EaseInOut,
Tween.LoopType.PingPong
);
}
private void flipSprite()
{
if (gardenerRef == null)
{
gardenerRef = GameObject.Find("GardenerRunningSprite");
gardenerAnimator = gardenerRef.GetComponent<Animator>();
}
Vector3 scale = LawnMowerObject.transform.localScale;
Vector3 rotation = LawnMowerObject.transform.eulerAngles;
scale.x *= -1;
rotation.z *= -1;
LawnMowerObject.transform.localScale = scale;
LawnMowerObject.transform.eulerAngles = rotation;
if (gardenerChasing == true)
{
gardenerRef.transform.localPosition = new Vector3(-6.3f, -2.9f, gardenerRef.transform.localPosition.z);
gardenerAnimator.SetBool("IsScared?", true);
gardenerChasing = false;
}
else
{
gardenerRef.transform.localPosition = new Vector3(8.3f, 3.9f, gardenerRef.transform.localPosition.z);
gardenerAnimator.SetBool("IsScared?", false);
gardenerChasing = true;
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 426d4511f8eb64747ab44f61973dcf2e

File diff suppressed because it is too large Load Diff

View File

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