sphere speaking
This commit is contained in:
@@ -5156,7 +5156,7 @@ PrefabInstance:
|
|||||||
- target: {fileID: 8137769401290482906, guid: 1358b4ef564c4704682417dff526766a,
|
- target: {fileID: 8137769401290482906, guid: 1358b4ef564c4704682417dff526766a,
|
||||||
type: 3}
|
type: 3}
|
||||||
propertyPath: m_IsActive
|
propertyPath: m_IsActive
|
||||||
value: 0
|
value: 1
|
||||||
objectReference: {fileID: 0}
|
objectReference: {fileID: 0}
|
||||||
m_RemovedComponents: []
|
m_RemovedComponents: []
|
||||||
m_RemovedGameObjects: []
|
m_RemovedGameObjects: []
|
||||||
|
|||||||
@@ -1,3 +1,23 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: e9879de5b83a4547be8ec1c406fb0556
|
guid: e9879de5b83a4547be8ec1c406fb0556
|
||||||
timeCreated: 1684016482
|
AudioImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 7
|
||||||
|
defaultSettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
loadType: 0
|
||||||
|
sampleRateSetting: 0
|
||||||
|
sampleRateOverride: 0
|
||||||
|
compressionFormat: 1
|
||||||
|
quality: 1
|
||||||
|
conversionMode: 0
|
||||||
|
preloadAudioData: 0
|
||||||
|
platformSettingOverrides: {}
|
||||||
|
forceToMono: 0
|
||||||
|
normalize: 1
|
||||||
|
loadInBackground: 0
|
||||||
|
ambisonic: 0
|
||||||
|
3D: 1
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
|
|||||||
@@ -1369,7 +1369,7 @@ GameObject:
|
|||||||
m_Icon: {fileID: 0}
|
m_Icon: {fileID: 0}
|
||||||
m_NavMeshLayer: 0
|
m_NavMeshLayer: 0
|
||||||
m_StaticEditorFlags: 2147483647
|
m_StaticEditorFlags: 2147483647
|
||||||
m_IsActive: 0
|
m_IsActive: 1
|
||||||
--- !u!4 &6534859180971967246
|
--- !u!4 &6534859180971967246
|
||||||
Transform:
|
Transform:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
|||||||
@@ -9612,7 +9612,7 @@ Transform:
|
|||||||
- {fileID: 1776039877960258817}
|
- {fileID: 1776039877960258817}
|
||||||
- {fileID: 1772644945931633228}
|
- {fileID: 1772644945931633228}
|
||||||
m_Father: {fileID: 0}
|
m_Father: {fileID: 0}
|
||||||
m_RootOrder: 0
|
m_RootOrder: -1
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
--- !u!54 &4758909792356742116
|
--- !u!54 &4758909792356742116
|
||||||
Rigidbody:
|
Rigidbody:
|
||||||
@@ -14949,7 +14949,12 @@ MonoBehaviour:
|
|||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
minDistance: 0.01
|
minDistance: 0.01
|
||||||
speed: 100
|
speed: 100
|
||||||
|
sizeFactor: 4
|
||||||
|
brightnessFactor: 12
|
||||||
target: {fileID: 0}
|
target: {fileID: 0}
|
||||||
|
audioSource: {fileID: 2877895139439227182}
|
||||||
|
centerTransform: {fileID: 6097717622075189454}
|
||||||
|
sphereRenderer: {fileID: 4939631329203768008}
|
||||||
--- !u!82 &2877895139439227182
|
--- !u!82 &2877895139439227182
|
||||||
AudioSource:
|
AudioSource:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
|||||||
@@ -1,19 +1,41 @@
|
|||||||
using EscapeRoomEngine.VR.Runtime;
|
using System;
|
||||||
|
using System.Linq;
|
||||||
|
using EscapeRoomEngine.VR.Runtime;
|
||||||
|
using NaughtyAttributes;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
namespace Station46.Environments.Intro_Sphere.Scripts
|
namespace Station46.Environments.Intro_Sphere.Scripts
|
||||||
{
|
{
|
||||||
public class FollowSphere : MonoBehaviour
|
public class FollowSphere : MonoBehaviour
|
||||||
{
|
{
|
||||||
public float minDistance = 0.001f;
|
private const int AverageLength = 3;
|
||||||
public float speed = 200;
|
private static readonly int FresnelPower = Shader.PropertyToID("_FresnelPower");
|
||||||
|
|
||||||
|
public float
|
||||||
|
minDistance = 0.001f,
|
||||||
|
speed = 200,
|
||||||
|
sizeFactor = 1,
|
||||||
|
brightnessFactor = 1;
|
||||||
[SerializeField] private Transform target;
|
[SerializeField] private Transform target;
|
||||||
|
[BoxGroup("Internal")] [SerializeField] private AudioSource audioSource;
|
||||||
|
[BoxGroup("Internal")] [SerializeField] private Transform centerTransform;
|
||||||
|
[BoxGroup("Internal")] [SerializeField] private MeshRenderer sphereRenderer;
|
||||||
|
|
||||||
|
private float[] _audioSamples;
|
||||||
|
private float[] _samplesAverage = new float[AverageLength];
|
||||||
|
private int averageIndex;
|
||||||
|
private float _initialBrightness;
|
||||||
|
private Material _sphereMaterial;
|
||||||
private Rigidbody _rigidbody;
|
private Rigidbody _rigidbody;
|
||||||
|
|
||||||
private void Awake()
|
private void Awake()
|
||||||
{
|
{
|
||||||
|
var clip = audioSource.clip;
|
||||||
|
_audioSamples = new float[clip.samples*clip.channels];
|
||||||
|
clip.GetData(_audioSamples, 0);
|
||||||
|
|
||||||
|
_sphereMaterial = sphereRenderer.material;
|
||||||
|
_initialBrightness = _sphereMaterial.GetFloat(FresnelPower);
|
||||||
_rigidbody = GetComponent<Rigidbody>();
|
_rigidbody = GetComponent<Rigidbody>();
|
||||||
target = Player.Instance.sphereFollow;
|
target = Player.Instance.sphereFollow;
|
||||||
}
|
}
|
||||||
@@ -27,5 +49,21 @@ namespace Station46.Environments.Intro_Sphere.Scripts
|
|||||||
_rigidbody.AddForce(speed * (followPosition - position));
|
_rigidbody.AddForce(speed * (followPosition - position));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void Update()
|
||||||
|
{
|
||||||
|
if (audioSource.isPlaying)
|
||||||
|
{
|
||||||
|
_samplesAverage[averageIndex] = Mathf.Abs(_audioSamples[audioSource.timeSamples]);
|
||||||
|
averageIndex = (averageIndex + 1) % AverageLength;
|
||||||
|
var average = _samplesAverage.Average();
|
||||||
|
SetCenterSize(1 + sizeFactor * average);
|
||||||
|
SetSphereMaterialBrightness(_initialBrightness - brightnessFactor * average);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SetCenterSize(float size) => centerTransform.localScale = new Vector3(size, size, size);
|
||||||
|
|
||||||
|
private void SetSphereMaterialBrightness(float brightness) => _sphereMaterial.SetFloat(FresnelPower, brightness);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user