Я пытаюсь сделать платформерную игру, которая использует 2D-спрайты в 3D-пространстве. По какой-то причине, хотя пуля, которую игрок стреляет правильно из ОД, являющегося дочерним элементом игрока, она не столкнется ни с чем (врагами, другими объектами и т. Д.) В 2D или 3D. У меня есть 3D-контроллер персонажа на родительском плеере GO, но это не влияет на объект пули, который я стреляю, не так ли?
Коллайдеры на все соответственно.
Пробовал с IsTrigger как вкл, так и вкл в разных комбинациях.
Объекты находятся в одном слое и в одной и той же позиции оси Z.
//BULLET FIRING SCRIPT
void Update()
{
if (Input.GetButtonDown("Fire2") && !Input.GetButton("Fire3") &&
Time.time > nextFireTime)
{
Rigidbody2D cloneRb = Instantiate(bullet,
bulletSpawn.position, Quaternion.identity) as Rigidbody2D;
cloneRb.AddForce(bulletPrefab.transform.right *
projectileForce);
nextFireTime = Time.time + fireRate;
}
}
//____________________________________________________________
//BULLET OBJECT SCRIPT
private void Start()
{
direction = Input.GetAxisRaw("Horizontal");
if (direction == -1)
{
facingLeft = true;
}
else if (direction == 1)
{
facingLeft = false;
}
else if (direction == 0)
{
facingLeft = false;
}
if (facingLeft == false)
{
rb.velocity = transform.right * speed;
Debug.Log("Fired Bullet");
}
else
{
bulletPrefab.transform.Rotate(0, 180, 0);
firePoint.transform.Rotate(0, 180, 0);
Debug.Log("Rotated Bullet");
Debug.Log("Fired Bullet Left");
rb.velocity = transform.right * speed;
}
}
// Update is called once per frame
void Update()
{
}
public void OnTriggerEnter2D(Collider2D collider)
{
Debug.Log("Bullet Hit:");
Debug.Log(collider.name);
Enemy enemy = collider.GetComponent<Enemy>();
if (enemy != null)
{
enemy.TakeDamage(damage);
}
Destroy(gameObject);
}
Ожидаемый результат: объект Bullet сталкивается с другими объектами, печатает выходные данные Debug.Log и уничтожается.
Фактический результат: объект Bullet запускается, перед или за другими объектами, которые также имеют коллайдеры, и выход Debug.Log отсутствует. Пуля не уничтожается и создает бесконечные экземпляры клонов при вводе назначенного ввода.