Я пытаюсь использовать box raycaster, чтобы генерировать урон вражеским объектам, нанесенный лазерным оружием, которое поражает все на его линии прогресса.
Я пытался следовать логике c документации Unity. но текущий код не дает никакого эффекта. Вражеские объекты имеют 2D-компоненты столкновения и прекрасно реагируют на другие 2D-коллайдеры.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class LaserController : MonoBehaviour
{
private Transform laser;
Vector2 boxSize;
private Vector2 previousPos;
// Start is called before the first frame update
void Start()
{
boxSize = new Vector2(1.8f * SceneScale.ratio, 0.1f * SceneScale.ratio);
laser = GetComponent<Transform>();
previousPos = new Vector2(laser.position.x, laser.position.y);
}
void FixedUpdate()
{
previousPos = laser.position;
laser.position += transform.up * 3 * SceneScale.ratio;
if (laser.position.y >= 10 * SceneScale.ratio)
{
Destroy(gameObject);
}
RaycastHit2D[] laserHit = Physics2D.BoxCastAll(previousPos, boxSize, laser.eulerAngles.z, new Vector2(transform.position.x, transform.position.y) - previousPos,
Camera.main.ScreenToWorldPoint(new Vector3(0, Screen.height, 0)).y, 0, -Mathf.Infinity, Mathf.Infinity);
for (int i = 0; i < 5; i++)
{
EnemyHP hpComponent = laserHit[i].collider.gameObject.GetComponent<EnemyHP>();
hpComponent.health = 0;
Destroy(laserHit[i].collider.gameObject, 1);
PlayerScore.playerScore++;
}
}
}
Заранее спасибо.