Danro/Assets/Scripts/Behaviour/FireScript2D.cs

38 lines
1.4 KiB
C#

using UnityEngine;
using RR.Game2D.Entities.Projectiles;
namespace RR.Game2D.Behaviour
{
public class FireScript2D : MonoBehaviour
{
[Header("Снаряды")]
public BasicProjectile projectilePrefab;
public Transform muzzle;
public float shotSpeed = 20f;
public KeyCode actionKey = KeyCode.F;
void Update()
{
if (Input.GetKeyDown(actionKey))
{
if (projectilePrefab == null) { Debug.LogWarning("No projectilePrefab"); return; }
float sx = transform.localScale.x;
float facing = Mathf.Sign(sx == 0 ? 1 : sx);
Vector2 dir = facing > 0 ? Vector2.right : Vector2.left;
Vector2 launchPos = muzzle
? (Vector2)muzzle.position
: (Vector2)transform.position + new Vector2(1.4f * facing, 0f);
BasicProjectile projectile = Instantiate(projectilePrefab, launchPos, Quaternion.identity);
projectile.transform.localScale = new Vector3(-facing * projectile.transform.localScale.x, projectile.transform.localScale.y, projectile.transform.localScale.z);
projectile.Launch(dir, shotSpeed);
var myCol = GetComponent<Collider2D>();
var pCol = projectile.GetComponent<Collider2D>();
if (myCol && pCol) Physics2D.IgnoreCollision(myCol, pCol, true);
}
}
}
}