mirror of
https://github.com/OMGeeky/GameDevGameJamV2.git
synced 2026-01-02 09:36:17 +01:00
Added sprite dissolve shader
This commit is contained in:
@@ -7,21 +7,22 @@ using Unity.Mathematics;
|
||||
using UnityEngine;
|
||||
|
||||
|
||||
[RequireComponent( typeof(Renderer) )]
|
||||
[RequireComponent( typeof(SpriteRenderer) )]
|
||||
public class Character : MonoBehaviour
|
||||
{
|
||||
public bool isActivePlayer;
|
||||
|
||||
public Character root;
|
||||
|
||||
#region Components
|
||||
|
||||
private new Collider2D collider;
|
||||
private SpriteRenderer spriteRenderer;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Inspector
|
||||
|
||||
[SerializeField] public bool isActivePlayer;
|
||||
[SerializeField] private Sprite aliveSprite;
|
||||
[SerializeField] private Sprite deadSprite;
|
||||
[SerializeField] private float dissolveSpeed = 0.05f;
|
||||
[SerializeField] private Transform spawnPosition;
|
||||
[SerializeField] private Transform parentForNew;
|
||||
@@ -31,6 +32,12 @@ public class Character : MonoBehaviour
|
||||
|
||||
#endregion
|
||||
|
||||
#region Other public data
|
||||
|
||||
public Character root;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Events
|
||||
|
||||
public event Action<Character> Killed;
|
||||
@@ -41,10 +48,11 @@ public class Character : MonoBehaviour
|
||||
|
||||
public List<Character> spawnedObjects = new();
|
||||
private static readonly int DissolveAmount = Shader.PropertyToID( "_DissolveAmount" );
|
||||
private readonly Collider2D[] findColliders = new Collider2D[50];
|
||||
|
||||
private IEnumerator Start()
|
||||
private void Start()
|
||||
{
|
||||
yield return new WaitForSeconds( 0.5f );
|
||||
// yield return new WaitForSeconds( 0.5f );
|
||||
|
||||
if ( root == null )
|
||||
{
|
||||
@@ -58,9 +66,9 @@ public class Character : MonoBehaviour
|
||||
|
||||
private void OnEnable()
|
||||
{
|
||||
GetComponent<InputToMovement>();
|
||||
GetComponent<CharacterController2D>();
|
||||
collider = GetComponent<Collider2D>();
|
||||
spriteRenderer = GetComponent<SpriteRenderer>();
|
||||
spriteRenderer.sprite = aliveSprite;
|
||||
if ( root != null )
|
||||
{
|
||||
Spawned -= OnSpawned;
|
||||
@@ -93,6 +101,7 @@ public class Character : MonoBehaviour
|
||||
// inputToMovement.enabled = false;
|
||||
isActivePlayer = false;
|
||||
SpawnNew();
|
||||
spriteRenderer.sprite = deadSprite;
|
||||
|
||||
// newPlayer.GetComponent<InputToMovement>().enabled = true;
|
||||
// newPlayer.GetComponent<CharacterController2D>().enabled = true;
|
||||
@@ -126,15 +135,18 @@ public class Character : MonoBehaviour
|
||||
float closestDistance = float.MaxValue;
|
||||
var t = transform;
|
||||
var localScale = t.localScale;
|
||||
Collider2D[] colliders = new Collider2D[50];
|
||||
Array.Clear( findColliders , 0 , findColliders.Length );
|
||||
Physics2D.OverlapBoxNonAlloc( point: t.position
|
||||
, size: new Vector2( localScale.x + range , localScale.y + range )
|
||||
, angle: t.rotation.eulerAngles.z
|
||||
, results: colliders
|
||||
, results: findColliders
|
||||
, layerMask: findLayerMask );
|
||||
|
||||
foreach ( Collider2D coll in colliders )
|
||||
foreach ( Collider2D coll in findColliders )
|
||||
{
|
||||
if ( coll == null )
|
||||
continue;
|
||||
|
||||
if ( !coll.TryGetComponent( out Character character ) )
|
||||
continue;
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@ using UnityEngine.Events;
|
||||
/// </summary>
|
||||
public class CharacterController2D : MonoBehaviour
|
||||
{
|
||||
public bool active = true;
|
||||
[SerializeField] private float jumpForce = 50f; // Amount of force added when the player jumps.
|
||||
[Range( 0 , .3f )] [SerializeField] private float movementSmoothing = .05f;// How much to smooth out the movement
|
||||
[SerializeField] private bool airControl = true; // Whether or not a player can steer while jumping;
|
||||
@@ -33,6 +34,9 @@ public class CharacterController2D : MonoBehaviour
|
||||
|
||||
private void FixedUpdate()
|
||||
{
|
||||
if ( !active )
|
||||
return;
|
||||
|
||||
m_Grounded = false;
|
||||
|
||||
Array.Clear( colliders , 0 , colliders.Length );
|
||||
@@ -65,6 +69,9 @@ public class CharacterController2D : MonoBehaviour
|
||||
|
||||
public void Move( float move , bool jump )
|
||||
{
|
||||
if(!active)
|
||||
return;
|
||||
|
||||
//only control the player if grounded or airControl is turned on
|
||||
if ( m_Grounded || airControl )
|
||||
{
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using System;
|
||||
|
||||
using UnityEngine;
|
||||
// ReSharper disable RedundantCheckBeforeAssignment
|
||||
|
||||
|
||||
[RequireComponent( typeof(CharacterController2D) , typeof(Character) )]
|
||||
@@ -13,8 +14,6 @@ public class InputToMovement : MonoBehaviour
|
||||
{
|
||||
controller2D = GetComponent<CharacterController2D>();
|
||||
character = GetComponent<Character>();
|
||||
|
||||
// interactTimer = 0;
|
||||
}
|
||||
|
||||
// Update is called once per frame
|
||||
@@ -27,16 +26,15 @@ public class InputToMovement : MonoBehaviour
|
||||
|
||||
private void Update()
|
||||
{
|
||||
if(controller2D.active != character.isActivePlayer)
|
||||
controller2D.active = character.isActivePlayer;
|
||||
|
||||
if ( !character.isActivePlayer )
|
||||
return;
|
||||
|
||||
// if ( controller2D == null )
|
||||
// return;
|
||||
|
||||
var horizontal = Input.GetAxis( "Horizontal" );
|
||||
var jump = Input.GetButton( "Jump" );
|
||||
|
||||
// var crouch = Input.GetButton( "Crouch" );
|
||||
if ( horizontal != 0 || jump )
|
||||
{
|
||||
controller2D.Move( horizontal , jump );
|
||||
|
||||
Reference in New Issue
Block a user