Как создать баллистику при стрельбе raycast?

Программирование на Юнити.

Как создать баллистику при стрельбе raycast?

Сообщение KiR_Ka 12 дек 2018, 21:11

В реальной жизни, когда стреляешь из оружия на большом расстоянии, пуля в полёте со временем начинает слабеть и падать вниз по определённой траектории.
Вот мне нужно как-то сделать баллистику при стрельбе, созданной через raycast. Помогите пожалуйста! Как можно это реализовать?
Скрипт стрельбы:
Синтаксис:
Используется csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class RifleB : MonoBehaviour {

    private RecoilController recoilController;
    private Camera _camera;
    public GameObject body;
    public float minx = -5;
    public float maxx = 5;
    public float miny = -5;
    public float maxy = 5;

    void Awake()
    {
        recoilController = body.GetComponent<RecoilController>();
    }
    void Start()
    {
        _camera = GetComponent<Camera>();
    }
    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            Shoot();
        }
    }
    public void Shoot()
    {
        var currentRotate = transform.rotation;
        transform.Rotate(Random.Range(minx, maxx), Random.Range(miny, maxy), 0);
        Vector3 point = new Vector3(
        _camera.pixelWidth / 2, _camera.pixelHeight / 2, 0);
        Ray ray = _camera.ScreenPointToRay(point);
        transform.rotation = currentRotate;
        RaycastHit hit;
        recoilController.Recoil();

        if (Physics.Raycast(ray, out hit))
        {
            StartCoroutine(SphereIndicator(hit.point));
            transform.Rotate(0, 0, 0);
        }
    }
        private IEnumerator SphereIndicator(Vector3 pos)
        {
            GameObject sphere = GameObject.CreatePrimitive(PrimitiveType.Sphere);
            sphere.transform.position = pos;
            yield return new WaitForSeconds(1);
            Destroy(sphere);
        }
    }
KiR_Ka
UNец
 
Сообщения: 13
Зарегистрирован: 07 дек 2018, 00:55
Откуда: Тюмень
Skype: Kote Kotin

Re: Как создать баллистику при стрельбе raycast?

Сообщение Ziza 12 дек 2018, 22:00

С таким скриптом никак)
Как один из вариантов - двигать пулю "по-настоящему" уже с учетом падения, не обязательно прямо отдельную сущность, достаточно просто точки. А попадание определять при помощи рейкаста брошенного из предыдущей позиции в следующую.
Но вы уверены что вам вообще оно надо так усложнять жизнь себе и игроку? Судя по тому как у вас сейчас реализована стрельба - вряд ли вы делаете симулятор снайпера.
К слову, примерно первые метров сто пуля наоборот летит вверх от того куда вы прицелились, у пистолетов по-меньше, но не суть) В играх это обычно никто не реализует - метишься в голову - попадешь в голову) У меня конечно нет опыта игры в великие и могучие COD и Battlefield, может там это все и реализовано. Но в те, которые доводилось играть ничего такого нет и не потому что не могут, просто ни к чему усложнять игроку жизнь)
Аватара пользователя
Ziza
UNIт
 
Сообщения: 81
Зарегистрирован: 02 ноя 2018, 23:07

Re: Как создать баллистику при стрельбе raycast?

Сообщение waruiyume 12 дек 2018, 23:31

К слову, примерно первые метров сто пуля наоборот летит вверх от того куда вы прицелились

Чего это вдруг, типа компенсация расстояния между стволом и прицелом, при калибровке прицела на 100 метрах? Даже если так, всё равно будет "метишься в голову - попадешь в голову", прицел то не в метре от ствола находится.
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Как создать баллистику при стрельбе raycast?

Сообщение Ziza 13 дек 2018, 00:51

Ну тут дело в том, что у каждого оружия есть характеристика "на каком расстоянии пуля находится на прицельной линии", не знаю как правильно называется, не сильно интересуюсь оружием и баллистикой. На снайперские винтовки это естественно не распространяется, прицел калибруется под расстояние.
У пистолетов, например на расстоянии 50м пуля примерно на 15 см выше канала ствола, зависит от модели естественно. То есть в голову попасть будет проблематично, если в нее целиться. С автоматами тоже самое, поэтому когда враг на расстоянии примерно 100 метров солдаты целятся в бляху ремня, чтобы попасть в грудь. Там превышение траектории над линией прицеливания где-то сантиметров 30.
Аватара пользователя
Ziza
UNIт
 
Сообщения: 81
Зарегистрирован: 02 ноя 2018, 23:07

Re: Как создать баллистику при стрельбе raycast?

Сообщение Ziza 13 дек 2018, 01:14

Да и извиняюсь за ввод в заблуждение выражением про 100 метров, из-за чего вы подумали, что дело в калибровке, естественно суть не в конкретном расстоянии для всего оружия, у пистолета ближе, у автомата естественно дальше и больше :)
Аватара пользователя
Ziza
UNIт
 
Сообщения: 81
Зарегистрирован: 02 ноя 2018, 23:07

Re: Как создать баллистику при стрельбе raycast?

Сообщение 1max1 13 дек 2018, 06:22

Зачем допиливать баллистику если юньковская физика сама всё делает?
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 15