Страница 1 из 1

Разлёт пуль raycast'om.

СообщениеДобавлено: 09 дек 2018, 16:59
KiR_Ka
Здравствуйте! Подскажите пожалуйста, как реализовать разброс пуль, если стрельбу я создал через Рейкаст?
Просто я не очень понимаю как это можно реализовать!
Вот код стрельбы:
Синтаксис:
Используется csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class RifleB : MonoBehaviour {

    private Camera _camera;

    public GameObject body;
    private RecoilHorizontal recoilHorizontal;
    private RecoilVertical recoilVertical;

    void Awake()
    {
        recoilHorizontal = body.GetComponent<RecoilHorizontal>();
        recoilVertical = GetComponent<RecoilVertical>();

        _camera = GetComponent<Camera>();

        Cursor.lockState = CursorLockMode.Locked;
        Cursor.visible = false;
    }

    // Use this for initialization
    void Start() {

    }

    // Update is called once per frame
    void Update() {
        if (Input.GetMouseButtonDown(0))
        {
            Shoot();
        }

    }
    public void Shoot()
    {
        Vector3 point = new Vector3(
        _camera.pixelWidth / 2, _camera.pixelHeight / 2, 0);
        Ray ray = _camera.ScreenPointToRay(point);
        RaycastHit hit;
        recoilHorizontal.recoilHor();
        recoilVertical.recoilVer();
        if (Physics.Raycast(ray, out hit))
        {
            GameObject hitObject = hit.transform.gameObject;
            ReactiveTarget target = hitObject.GetComponent<ReactiveTarget>();
            if (target != null)
            {
                target.ReactToHit();
            }
        }
    }
}
 

Re: Разлёт пуль raycast'om.

СообщениеДобавлено: 09 дек 2018, 17:48
Xtir
Я так понял, у тебя стрельба реализована просто рейкастом, без пуль?
Если так, то я бы просто переменной point добавил бы немного рандома.

Re: Разлёт пуль raycast'om.

СообщениеДобавлено: 09 дек 2018, 18:19
KiR_Ka
Xtir писал(а):Я так понял, у тебя стрельба реализована просто рейкастом, без пуль?
Если так, то я бы просто переменной point добавил бы немного рандома.

Покажите, как бы вы это сделали.

Re: Разлёт пуль raycast'om.

СообщениеДобавлено: 09 дек 2018, 18:23
1max1
Синтаксис:
Используется csharp
Vector3 point = new Vector3( _camera.pixelWidth / 2, _camera.pixelHeight / 2, 0);
point.x += Random.Range(-5, 5);
point.y += Random.Range(-5, 5);

Re: Разлёт пуль raycast'om.

СообщениеДобавлено: 09 дек 2018, 18:53
KiR_Ka
1max1 писал(а):
Синтаксис:
Используется csharp
Vector3 point = new Vector3( _camera.pixelWidth / 2, _camera.pixelHeight / 2, 0);
point.x += Random.Range(-5, 5);
point.y += Random.Range(-5, 5);

Всё равно не работает.

Re: Разлёт пуль raycast'om.

СообщениеДобавлено: 09 дек 2018, 18:58
KiR_Ka
Xtir писал(а):Я так понял, у тебя стрельба реализована просто рейкастом, без пуль?
Если так, то я бы просто переменной point добавил бы немного рандома.

А как бы вы это сделали? напишите пример пожалуйста!

Re: Разлёт пуль raycast'om.

СообщениеДобавлено: 09 дек 2018, 18:59
KanycTa
1. Создай GameObject который будет origin'ом твоего рейкаста
2. При стрельбе изменяешь угол этого рейкаста и возвращаешь в исходную позицию через Update

Re: Разлёт пуль raycast'om.

СообщениеДобавлено: 09 дек 2018, 19:08
Ziza
KiR_Ka писал(а):
1max1 писал(а):
Синтаксис:
Используется csharp
Vector3 point = new Vector3( _camera.pixelWidth / 2, _camera.pixelHeight / 2, 0);
point.x += Random.Range(-5, 5);
point.y += Random.Range(-5, 5);

Всё равно не работает.

Даже интересно, а как вы определили, что не работает? Такого не может быть. Увеличивайте число, если разлет нужен больше.
Это конечно не совсем разлет, но если смотреть на то, что вы и стреляете не в точку - сойдет)

Re: Разлёт пуль raycast'om.

СообщениеДобавлено: 09 дек 2018, 19:29
Xtir
KiR_Ka писал(а):
Xtir писал(а):Я так понял, у тебя стрельба реализована просто рейкастом, без пуль?
Если так, то я бы просто переменной point добавил бы немного рандома.

А как бы вы это сделали? напишите пример пожалуйста!

Я бы так же сделал как в примере выше ))))

Re: Разлёт пуль raycast'om.

СообщениеДобавлено: 09 дек 2018, 19:56
KiR_Ka
Я уже решил проблему,
спасибо большое! [V]