Снаряд не стреляет по направлению моего оружия - PullRequest
0 голосов
/ 22 января 2020

Так что моя игра похожа на 3D-шутер сверху вниз, поэтому я хочу, чтобы мой пистолет стрелял везде, где находится мышь, и он не будет go для мыши, если только я не стреляю вниз. Если вы видели игру Brackyes под названием Ball Wars, я вроде как пытался воспроизвести такую ​​игру, но снаряд стреляет не так, как надо.

Я получил свой сценарий из учебного пособия по боям дальнего боя blackthornprods (для 2d так что, возможно, в этом и заключается проблема, но я не знаю, как ее решить):

public float speed;
public float lifeTime;

private void Start()
{
    Invoke("DestoryProjectile", lifeTime);
}

private void Update()
{
    transform.Translate(transform.up * speed * Time.deltaTime);
}

void DestroyProjectile()
{
    Destroy(gameObject);
}

Спасибо, кто попробует!

Вот мой другой сценарий: Camera mainCam;

public GameObject projectile;

public Transform shotPoint;

private float timeBtwShots;
public float startTimeBtwShots;

void Awake()
{
    mainCam = Camera.main;
}

void Update()
{
    float objectDepthFromCamera = Vector3.Dot(
            transform.position - mainCam.transform.position,
            mainCam.transform.forward);

    Vector3 cursorWorldPosition = mainCam.ScreenToWorldPoint(Input.mousePosition
            + Vector3.forward * objectDepthFromCamera);

    Vector3 localUpNeeded = Vector3.Cross(Vector3.forward,
            cursorWorldPosition - transform.position);

    transform.rotation = Quaternion.LookRotation(Vector3.forward, localUpNeeded);

    if(timeBtwShots <= 0)
    {
        if (Input.GetMouseButtonDown(0))
        {
            Instantiate(projectile, shotPoint.position, transform.rotation);
            timeBtwShots = startTimeBtwShots;
        } 
    }
    else
    {
        timeBtwShots -= Time.deltaTime;
    }
}

1 Ответ

1 голос
/ 22 января 2020

Снаряд не стреляет по направлению моего оружия. Простое решение -

  • Первый экземпляр или пул экземпляра снаряда.
  • Установите вращение проекции от вращения оружия и установите местоположение в точку возрождения
  • Теперь стреляйте или какую бы стратегию вы не использовали

Рассмотрите глобальную ротацию, если вам нужна помощь, скажите мне, я отредактирую и дам фрагмент кода.

Это должно сработать . Если не опубликовать весь необходимый код, я дам лучшее решение.

Здесь - это пример проекта github, который я создал, специально для вас. Я открыл Unity почти через год. Пожалуйста, проверьте все версии .

Обязательно проверьте:

firing in facing direction ? 
just instantiate at spawn point
just added some rotation

Я думаю, что это должно дать вам концепцию.

Press X for a rantom rotation
Press Space to shoot a projectile :lol:
The white cube shows that it always shoots at a constant direction
...