34 lines
1.2 KiB
C#
34 lines
1.2 KiB
C#
using UnityEngine;
|
|
|
|
public class FireScript2D : MonoBehaviour
|
|
{
|
|
[Header("Снаряды")]
|
|
public BasicProjectile projectilePrefab;
|
|
public Transform muzzle;
|
|
public float shotSpeed = 20f;
|
|
|
|
void Update()
|
|
{
|
|
if (Input.GetKeyDown(KeyCode.F))
|
|
{
|
|
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 p = Instantiate(projectilePrefab, launchPos, Quaternion.identity);
|
|
p.transform.localScale = new Vector3(-facing * p.transform.localScale.x, p.transform.localScale.y, p.transform.localScale.z);
|
|
p.Launch(dir, shotSpeed);
|
|
|
|
var myCol = GetComponent<Collider2D>();
|
|
var pCol = p.GetComponent<Collider2D>();
|
|
if (myCol && pCol) Physics2D.IgnoreCollision(myCol, pCol, true);
|
|
}
|
|
}
|
|
}
|