adding in some needed packages
This commit is contained in:
parent
9e739f5dc8
commit
aba5310742
1012 changed files with 494191 additions and 1 deletions
77
Assets/Bremsengine/Googly Eyes/GooglyEye2D.cs
Normal file
77
Assets/Bremsengine/Googly Eyes/GooglyEye2D.cs
Normal file
|
|
@ -0,0 +1,77 @@
|
|||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using Core.Extensions;
|
||||
using UnityEditor;
|
||||
|
||||
namespace Bremsengine
|
||||
{
|
||||
public class GooglyEye2D : MonoBehaviour
|
||||
{
|
||||
Vector2 Velocity;
|
||||
Vector3 LastPosition;
|
||||
|
||||
[SerializeField] float maxSpeedEffect = 4f;
|
||||
[SerializeField] float size = 0.2f;
|
||||
[SerializeField] Transform eyeball;
|
||||
[SerializeField] Transform iris;
|
||||
float gravityLerp;
|
||||
[SerializeField] float gravity = 10f;
|
||||
private void ApplySize(float size)
|
||||
{
|
||||
if (eyeball.GetComponent<SpriteRenderer>() is SpriteRenderer e)
|
||||
{
|
||||
e.size = new(size, size);
|
||||
}
|
||||
if (iris.GetComponent<SpriteRenderer>() is SpriteRenderer i)
|
||||
{
|
||||
i.size = new Vector2(size, size) * 0.5f;
|
||||
}
|
||||
}
|
||||
private void Awake()
|
||||
{
|
||||
ApplySize(size);
|
||||
}
|
||||
public Vector2 DetermineDesiredPosition(Vector2 direction)
|
||||
{
|
||||
if (eyeball == null ||
|
||||
iris == null)
|
||||
{
|
||||
if (eyeball == null)
|
||||
{
|
||||
return eyeball.transform.position;
|
||||
}
|
||||
return Vector2.zero;
|
||||
}
|
||||
|
||||
float lerp = Velocity.magnitude / maxSpeedEffect.Max(0.1f);
|
||||
lerp = lerp.Clamp(0f, 1f);
|
||||
|
||||
Vector2 position1 = eyeball.position;
|
||||
Vector2 position2 = (Vector2)eyeball.position - direction.normalized * (size / 4f);
|
||||
|
||||
return Vector2.Lerp(position1, position2, lerp);
|
||||
}
|
||||
private void Update()
|
||||
{
|
||||
Velocity = (transform.position - LastPosition) * (1f / Time.deltaTime);
|
||||
LastPosition = transform.position;
|
||||
}
|
||||
private void LateUpdate()
|
||||
{
|
||||
Vector2 desiredPosition = DetermineDesiredPosition(Velocity);
|
||||
if (Velocity.magnitude < maxSpeedEffect)
|
||||
{
|
||||
gravityLerp = gravityLerp.LerpTime(1f, gravity);
|
||||
}
|
||||
else
|
||||
{
|
||||
gravityLerp = gravityLerp.LerpTime(0f, gravity);
|
||||
}
|
||||
Vector2 gravityPosition = (Vector2)eyeball.position + (Vector2.down) * size * 0.25f;
|
||||
desiredPosition = Vector2.Lerp(desiredPosition, gravityPosition, gravityLerp);
|
||||
|
||||
iris.transform.position = desiredPosition;
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue