Показать сообщение отдельно
Старый 02.08.2016, 23:49   #24
Foxymist
Нуждающийся
 
Регистрация: 29.06.2016
Сообщений: 80
Написано 28 полезных сообщений
(для 52 пользователей)
Ответ: Mistshift Обучение

Немного продвинулся в перёд :
Теперь харвестер сосёт туман, количество и скорость всасываемого, зависит от дистанции между харвестером и орбитальной станцией.

На планете простой скрипт, имя планеты, общее количество тумана и сколько тумана осталось.

В верхнем левом углу, отображается - количество собранного тумана.
Немного оптимизировал скрип:

using UnityEngine;
using System.Collections;

public class 
NameUnit MonoBehaviour {

    public static 
NameUnit Instance get; private set; }
    
    public 
string UnitName;
    public 
Color ColorText;

    public 
float UnitHP;
    public 
Color ColorHP;

    public 
float UnitEnergy;
    public 
Color ColorEnergy;
    
    public 
float Resurs;
    public 
Color ColorResurs;

    private 
float distanceVector;
    public 
float distanceOrbitalStation;

    public 
Transform AlienUnit;
    public 
Transform OrbitalStationUnit;
    
    private 
float HarvestMistRes;

    public 
bool componentHarvest;

    
void Start () {

        
//HarvestMistRes = Mist.Instance.MistPlanet;
    
}


    public 
void Awake()
    {
        
Instance this;
    
    }


    
Vector3 TextPos;

    
void OnGUI()
    {
          
                
TextPos Camera.main.WorldToScreenPoint (transform.position);

                if (
Input.GetKey (KeyCode.Q)) {
     
                
GUI.Label (new Rect (TextPos.xScreen.height TextPos.y5050), UnitName);
                
GUI.color Color.black ColorText;
                
GUI.Label (new Rect (TextPos.xScreen.height TextPos.- (20), 5050), "HP:" UnitHP);

                }    

        if (
componentHarvest == true) {GUIResursProgress (ResursColorResurs40);}

        
GUIResursProgress (UnitHPColorHP35);
        
GUIResursProgress (UnitEnergyColorEnergy30);

              }

    
void Update () 
    {


        
distanceVector DistanceUnit(gameObject.transformAlienUnit);

        
distanceOrbitalStation DistanceUnit(gameObject.transformOrbitalStationUnit);

        
        if (
Input.GetKeyDown (KeyCode.F1) && distanceVector<5) {UnitHP-=10;}
        
        
//UnitHP
        
UnitHP=HPUnit(UnitHP,gameObject);

        
//UnitEnergy
        
if (distanceOrbitalStation 20) {UnitEnergy Energy(UnitEnergy,100,20,1);}
        
        if (
distanceOrbitalStation 20) {UnitEnergy Energy(UnitEnergy,100,20,0);}

        
//UnitResurs
        
if (componentHarvest == true) {Resurs ResursLimit (80Resurs100UnitEnergy20);}

    }

    
//Function=====================================================================================================================================
    
public void GUIResursProgress(float ResursGUIColor ResursColorint TextYPos)
        
    {
        
        
GUI.color Color.black ResursColor;
        for (
int i 0<ResursGUIi=i+1
        {
            
            
GUI.Label (new Rect ((TextPos.+ (i) - ResursGUI 2), Screen.height TextPos.- (TextYPos), 5050), ".");
            
        }

    }

    public static 
float DistanceUnit(Transform A,Transform B)

    {
        return 
Vector3.Distance (A.positionB.position);
    }


    public static 
float HPUnit(float HPGameObject gameObject)

    {
        if (
HP 100) {HP 100;}
        
        if (
HP 1) {gameObject.active false;}

        return 
HP;
    }

    public static 
float Energy(float E,float Max,float Min int FlagIE)
        
    {

        if (
FlagIE == 

        {
             
+= 10f TimeRTS ();
        
            if (
Max) {=Max;}
        }


        if (
FlagIE == 
        {
            
-= 10f TimeRTS ();

            if (
Min ) {Min;}
            
        }


        return 
E;
    }
    
    public static 
float ResursLimit(float UpdateHarvest ,float ResursHarvestfloat MaxResursfloat ResursEnergyfloat EnergyDist)
        
    {
        if (
Mist.Instance.MistPlanet 0

                 {

                        if (
ResursHarvest MaxResurs && ResursEnergy EnergyDist) {
                                
ResursHarvest += 50f TimeRTS ();
                        }

                        if (
ResursHarvest MaxResurs && ResursEnergy == EnergyDist) {
                                
ResursHarvest += 10f TimeRTS ();
                                
UpdateHarvest=99.9f;
                        }
        
                        if (
ResursHarvest MaxResurs) {
                                
ResursHarvest 0;
                        } 

                        if (
ResursHarvest MaxResurs && ResursHarvest UpdateHarvest && Mist.Instance.MistPlanet 0) {
            
                          
Mist.Instance.MistPlanet--;//Resurs

                        
}

             }

        return 
ResursHarvest;
        
    }
    
    public static 
float TimeRTS(float t=1.0f )
        
    {
        return 
Time.deltaTime*t;
    }
//Function=====================================================================================================================================    

Управление осталось тем же Узнать о планете больше “Q”
Обзор - Зажать правую кнопку мыши + двигаем мышь.
Зум -Скроллинг .
Передвинуть орбитальную станцию; Клик по сфере левая кнопка мыши.
Строить можно только там, где орбитальная станция и в определённом радиусе вокруг неё.
Стройка – Пробел.
Сейчас в планах сделать GUI механизм покупки – продажи.
Миниатюры
Нажмите на изображение для увеличения
Название: Mistshift.png
Просмотров: 698
Размер:	613.4 Кб
ID:	22455  
Вложения
Тип файла: rar Mistshift.rar (7.81 Мб, 547 просмотров)
(Offline)
 
Ответить с цитированием