Player Ray - Форум - Все для Unity3d

Все для Unity3d> Player Ray - Форум>
Страница 1 из 11
Форум » Unity » Вопросы » Player Ray (У меня тут проблемка.)
Player Ray
BlackRodgerДата: Понедельник, 08.02.2016, 19:26 | Сообщение # 1
Новый писатель
Группа: Пользователи
Сообщений: 1
Статус: Offline
Мне надо сделать так чтоб луч после использования имел что-то типа куллдауна, но я никак не могу это сделать я пытался с WaitForSeconds но не выходит, помогите плис.
using UnityEngine;
using System.Collections;

public class PlayerRay : MonoBehaviour {
public GameObject textGUI;
public LayerMask layers;
public float useDistance = 1.5f;

    public bool Time = false;

private bool usable;
private bool noArgument;
private GameObject usableObject;
private PlayerVitals pv;

void Start() {
pv = transform.root.GetComponent<PlayerVitals>();
noArgument = true;
}

void Update() {
        
            RaycastHit useHit;
            if (Physics.Raycast(transform.position, transform.forward, out useHit, useDistance, layers.value))
            {
                UsableObject uo = useHit.collider.GetComponent<UsableObject>();
                if (uo)
                {
                    usable = true;
                    usableObject = useHit.collider.gameObject;
                }
                else {
                    usable = false;
                    usableObject = null;
                }
            }
            else {
                usable = false;
                usableObject = null;
            }

            if (usable)
            {
                if (usableObject.GetComponent<UsableObject>().weaponPickup.enabled && usableObject.GetComponent<UsableObject>().weaponPickup.WeaponInventory == false)
                {
                    PrintText("Take " + usableObject.transform.parent.name);
                    noArgument = true;
                }
                if (usableObject.GetComponent<UsableObject>().weaponPickup.enabled && usableObject.GetComponent<UsableObject>().weaponPickup.WeaponInventory == true)
                {
                    PrintText("Equip " + usableObject.transform.parent.name);
                    noArgument = true;
                }
                else if (usableObject.GetComponent<UsableObject>().ammoPickup.enabled)
                {
                    if (usableObject.GetComponent<UsableObject>().ammoPickup.numberOfUses <= 0)
                    {
                        PrintText("No more ammo");
                        noArgument = false;
                    }
                    if (usableObject.GetComponent<UsableObject>().ammoPickup.numberOfUses > 0)
                    {
                        PrintText(" [E]Pick up ammo");
                        noArgument = true;
                    }
                }
                else if (usableObject.GetComponent<UsableObject>().healthPickup.enabled)
                {
                    if (pv.curHealth == pv.maxHealth)
                    {
                        PrintText("You are already at full health!");
                        noArgument = false;
                    }
                    else if (pv.curHealth < pv.maxHealth)
                    {
                        PrintText(" [E]Use med-kit");
                        noArgument = true;
                    }
                }
                else if (usableObject.GetComponent<UsableObject>().usableVehicle.enabled)
                {
                    PrintText(" [E]Drive " + usableObject.GetComponent<UsableObject>().usableVehicle.vehicleName);
                }
                else {
                    PrintText("Take" + usableObject.transform.parent.name);
                    noArgument = true;
                }
            }
            else {
                PrintText("");
            }

            if (usable && noArgument && Input.GetButtonDown("Use"))
            {
                useHit.collider.transform.SendMessage("OnPlayerUse", SendMessageOptions.RequireReceiver);
            }
        
       
           
}

public void PrintText(string text) {
textGUI.GetComponent<TextMesh>().text = text;
}
    
}
 
iamhippo86Дата: Понедельник, 08.02.2016, 22:08 | Сообщение # 2
Новый писатель
Группа: Пользователи
Статус: Offline
Код
using UnityEngine;
using System.Collections;

public class PlayerRay : MonoBehaviour {

   float waitRayTime;

   // Use this for initialization
   void Start () {
   
   }
   
   // Update is called once per frame
   void Update () {
      if(waitRayTime < 0)
      {
         RaycastHit hit;
         if(Physics.Raycast(transform.position, transform.forward, out hit))
         {
            waitRayTime = 1;
         }
      }
      else
      {
         waitRayTime -= Time.deltaTime;
      }
   }
}

Можно как-то так сделать, ну там доделаешь под свои нужды. Надеюсь комментарии не нужны, так разберёшься ))
 
BlackRodgerДата: Вторник, 09.02.2016, 19:15 | Сообщение # 3
Новый писатель
Группа: Пользователи
Сообщений: 1
Статус: Offline
iamhippo86, Спасибо, то что нужно.
 
Форум » Unity » Вопросы » Player Ray (У меня тут проблемка.)
Страница 1 из 11
Поиск:
Свернуть
Развернуть
Необходима авторизация
0
ТОП-5 САЙТА
НОВЫЕ ИГРЫ
ГОРЯЧИЕ ТЕМЫ
СЛУЧАЙНЫЕ ФАЙЛЫ