Войти
UnityФорумОбщее

Помогите

#0
10:26, 6 июня 2021

Я делаю игру на adroid. Игрок должен уничтожать ракеты, стреляя в них. Но ракеты уничтожается даже когда пуля пролетает ниже ракеты. Я уменьшал колайдеры, но все равно не помогает. Что делать?


#1
10:54, 6 июня 2021

Ну или коллаидер как-нибудь неправильно повернут или в логике какой-нибудь баг.
Вообще телепаты в отпуске - скидывай хоть код какой или сам дебажь.

#2
18:08, 6 июня 2021

MANAB
Вот код пули:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class bullet : MonoBehaviour {

  public float speed;
  public float lifetime;
  public float distance;
  public LayerMask whatIsSolid;
  public int damage;

  void Update () {
    lifetime -= Time.deltaTime;
    RaycastHit2D hitInfo = Physics2D.Raycast (transform.position, transform.up, distance, whatIsSolid);

    if (hitInfo.collider != null) {
      if (hitInfo.collider.CompareTag ("raketa")) {
        hitInfo.collider.GetComponent<raketa> ().TakeDamage (damage);
      }
      Destroy (gameObject);
    }

    if (lifetime <= 0) {
      Destroy (gameObject);
    }
    transform.Translate (Vector2.right * speed * Time.deltaTime);
  }
}

Ракеты:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class raketa : MonoBehaviour {

  public float speed;
  public int hp;

  void Start(){
    hp = 1;
  }

  void Update () {
    if (hp <= 0) {
      Destroy (gameObject);
    }

    transform.Translate (Vector2.left * speed * Time.deltaTime);
  }

  public void TakeDamage(int damage){
    hp -= damage;
  }
}

#3
(Правка: 18:28) 18:27, 6 июня 2021

From_DK
> transform.up
Как ты думаешь, что это?
Попробуй заменить его на transform.forward, если уж так хочется использовать именно raycast. Помоему в юньке были нормальные средства обнаружения коллизий, а не вот это вот.

UnityФорумОбщее