1 Востаннє редагувалося Fox (23.02.2016 11:59:54)

Тема: Raycast unity. Як перевiрити чи луч влучив в точку.

Ось є луч котрий виходить з стволу пушки (летить прямо на 9999999 метрів).
Питання: Як перевірити попадання нижче i вище луча?
Якщо хтось захоче спитати навіщо це потрібно: Гравець повертає дуло тільки вправо i в ліво. В верх i вниз воно саме наводиться.
Пробачте що тут питаю просто мене на всix форумах послали далеко :С
Ось код якщо потрiбно:

using UnityEngine;
using System.Collections;
using UnityEngine.Networking;

public class Shot : NetworkBehaviour 
{
    public RaycastHit hit;
    public bool Shot_Load = true;
    Color cool;
    [SyncVar]
    public int Health = 100;
    public int HealthNone = 100;
    public Transform shot;
    public Transform cam_pos;
    [SyncVar]
    public int commands;

    Renderer[] renderers;
    void Start() { cam_pos = UnityObject.GetInScen("CameCam").transform; }
    void Update ()
    {
        if (Shot_Load) { cool = Color.red; } else { cool = Color.gray; }
        Debug.DrawRay(UnityObject.Get("Ture_Shot", transform).position, UnityObject.Get("Ture_Shot", transform).forward * 1000.0F, cool);
        if (!isLocalPlayer) { return; }
        if (Physics.Raycast(UnityObject.Get("Ture_Shot", transform).position, UnityObject.Get("Ture_Shot", transform).forward, out hit, 1000.0F))
        {
            shot = hit.transform;
        }
        if(Shot_Load)
        {
            if(Input.GetMouseButtonDown(0))
            {
                Invoke("Reloading", 3);
                Shot_Load = false;
                if (shot.tag == "Player")
                {
                    Debug.Log("Shot");
                    CmdAttak(shot.gameObject);
                }
            }
        }
    }
    public void Reloading() 
    {
        Shot_Load = true;
    }
    [ClientRpc]
    private void RpcRespawn() 
    {
        Health = HealthNone;
        Transform spawn = NetworkManager.singleton.GetStartPosition();
        transform.position = spawn.position;
        transform.rotation = spawn.rotation;
        ToggleRenderer(true);
    }
    [Command]
    private void CmdAttak(GameObject obj)
    {
        Shot net = obj.GetComponentInParent<Shot>();
        net.CmdDamage();
        Debug.Log("CmdAttak");
    }
    [Command]
    private void CmdDamage()
    {
        Debug.Log("CmdDamage");
        int damag = 100;
        if (damag >= Health)
        {
            RpcDead();
        }
        else 
        {
            Health -= damag;
            Debug.Log("CmdDamage het");
        }
    }
    [ClientRpc]
    private void RpcDead() 
    {
        ToggleRenderer(false);
        Invoke("CmdCallRespawn", 5);
        if (commands == 0)
        {
            transform.position = UnityObject.GetInScen("Red").transform.position;
        }
        if (commands == 1)
        {
            transform.position = UnityObject.GetInScen("Blue").transform.position;
        }
        Debug.Log("Call RpcRespawn");
    }
    [Command]
    void CmdCallRespawn() 
    {
        RpcRespawn();
    }
    void ToggleRenderer(bool isAlive)
    {
        Debug.Log("ToggleRenderer");
        renderers = GetComponentsInChildren<Renderer>();
        for (int i = 0; i < renderers.Length; i++)
            renderers[i].enabled = isAlive;
    }
}

Дуже дякую за вiдповiдь.

2

Re: Raycast unity. Як перевiрити чи луч влучив в точку.

Вам має допомогти BoxCast.

Подякували: Fox1

3

Re: Raycast unity. Як перевiрити чи луч влучив в точку.

quez написав:

Вам має допомогти BoxCast.

Дякую... PS: Якщо чесно перший раз таку штуку бачу

4

Re: Raycast unity. Як перевiрити чи луч влучив в точку.

vtorgashov написав:
quez написав:

Вам має допомогти BoxCast.

Дякую... PS: Якщо чесно перший раз таку штуку бачу

Я теж :)

5 Востаннє редагувалося Fox (23.02.2016 12:18:40)

Re: Raycast unity. Як перевiрити чи луч влучив в точку.

quez написав:
vtorgashov написав:
quez написав:

Вам має допомогти BoxCast.

Дякую... PS: Якщо чесно перший раз таку штуку бачу

Я теж :)

Якщо не секрет що ви в google спитали ???
Я 4 дня шукав щось таке

6

Re: Raycast unity. Як перевiрити чи луч влучив в точку.

Я знав про SphereCast та RayCast, тож подивився, чи є схожі штуки. Таки є, і не одна.

P.S. У нас з'явився розділ, присвячений розробці ігор, створюйте наступного разу тему там.

7

Re: Raycast unity. Як перевiрити чи луч влучив в точку.

а от я про всілякі касти давно знаю...

8

Re: Raycast unity. Як перевiрити чи луч влучив в точку.

FakiNyan написав:

а от я про всілякі касти давно знаю...

А ви не моглиб розжувати менi як цим boxcast'ом користуватися.