41 lines
No EOL
1.9 KiB
C#
Executable file
41 lines
No EOL
1.9 KiB
C#
Executable file
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
namespace Core.Extensions
|
|
{
|
|
public static class RigidBodyExtensions
|
|
{
|
|
public static Vector3 VelocityTowardsXZ(this Rigidbody rb, Vector3 direction, float delta)
|
|
{
|
|
return rb.linearVelocity = Vector3.MoveTowards(rb.linearVelocity, new(direction.x, rb.linearVelocity.y, direction.z), delta * Time.deltaTime);
|
|
}
|
|
public static Vector2 VelocityTowardsX(this Rigidbody2D rb, Vector2 direction, float delta)
|
|
{
|
|
return rb.linearVelocity = Vector2.MoveTowards(rb.linearVelocity, new(direction.x, rb.linearVelocity.y), delta * Time.deltaTime);
|
|
}
|
|
public static Vector2 VelocityTowards(this Rigidbody2D rb, Vector2 direction, float delta)
|
|
{
|
|
return rb.linearVelocity = Vector2.MoveTowards(rb.linearVelocity, direction, delta * Time.deltaTime);
|
|
}
|
|
public static Vector2 VelocityScale(this Rigidbody2D rb, Vector2 direction, float scale)
|
|
{
|
|
return rb.linearVelocity = direction * scale;
|
|
}
|
|
public static Vector2 VelocityTowardsWithoutDelta(this Rigidbody2D rb, Vector2 direction, float delta)
|
|
{
|
|
return rb.linearVelocity = Vector2.MoveTowards(rb.linearVelocity, direction, delta);
|
|
}
|
|
public static Vector2 ScaleVelocityVector(this Rigidbody2D rb, float time, float mix = 1f)
|
|
{
|
|
return rb.linearVelocity * time * mix;
|
|
}
|
|
public static Vector2 PredictPosition(this Rigidbody2D rb, float time, float mix = 1f)
|
|
{
|
|
Vector2 position = rb.position;
|
|
Vector2 direction = rb.ScaleVelocityVector(time, mix);
|
|
Debug.DrawLine(position, position + direction, Color.cyan.Opacity(255),0.25f);
|
|
return position + direction;
|
|
}
|
|
}
|
|
} |