52 lines
1.4 KiB
C#
52 lines
1.4 KiB
C#
using UnityEngine;
|
|
|
|
public class Chip : MonoBehaviour
|
|
{
|
|
public Team team;
|
|
[SerializeField] float acceleration = 200f;
|
|
[SerializeField] float maxFallingRotationSpeed = 500;
|
|
|
|
[SerializeField] private SpriteRenderer spriteRenderer;
|
|
|
|
private float chipVelocity = 0;
|
|
private float rotationSpeed = 0;
|
|
|
|
public void Configure(Sprite sprite, Team team)
|
|
{
|
|
spriteRenderer.sprite = sprite;
|
|
this.team = team;
|
|
}
|
|
|
|
public virtual void RemoveFromField()
|
|
{
|
|
Destroy(gameObject);
|
|
}
|
|
|
|
public bool MoveToLinear(Vector2 target, float speed)
|
|
{
|
|
transform.position = Vector2.MoveTowards(transform.position, target, speed * Time.deltaTime);
|
|
|
|
if ((Vector2)transform.position == target)
|
|
return true;
|
|
|
|
return false;
|
|
}
|
|
|
|
public bool MoveToAccelerated(Vector2 target)
|
|
{
|
|
transform.position = Vector2.MoveTowards(transform.position, target, chipVelocity * Time.deltaTime);
|
|
chipVelocity += acceleration * Time.deltaTime;
|
|
|
|
if ((Vector2)transform.position == target)
|
|
{
|
|
acceleration = 0;
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
public void SetRandomRotationSpeed() => rotationSpeed = Random.Range(-maxFallingRotationSpeed, maxFallingRotationSpeed);
|
|
|
|
public void Rotate() => transform.Rotate(Vector3.forward * rotationSpeed * Time.deltaTime);
|
|
} |