Színének megváltoztatása vagy az átláthatóság az objektum

Jó napot kívánok. Az egyik vagy másik formájában, ezt a kérdést már kérte, hogy forume.No sajnos nekem és nem törlődik. A feladat a következő: - a jelenet néhány tárgyat (a háló beépített panel), 10-20sht (néhány ágyazva). Kell egy kattintásra vagy elrejteni őket szelektíven. Vagy (ami sokkal jobb.) Változás anyag (előnyösen átlátszó) objektumot. Amíg ez ischeznoveniya.Odin kattintson kiválasztás (megvilágított), egy második kattintással 50% átláthatóságot, és a harmadik kattintás vidimost.Nu nulla és kívánatos, hogy képes legyen visszatérni a láthatóságát az összes objektum így rejtve.
Most van a kamera körül forognak a csoport lóg script található a hálózaton:

# 91; AddComponentMenu # 40; "Camera Control / 3DSMax Camera Style" # 41; # 93;

public class maxCamera. MonoBehaviour

nyilvános Transform célt;

nyilvános Vector3 targetOffset;

állami float távolság = 5.0f;

nyilvános float maxDistance = 20;

állami float MINDISTANCE = .6f;

állami float xSpeed ​​= 200.0f;

állami float ySpeed ​​= 200.0f;

public int yMinLimit = - 80;

public int yMaxLimit = 80;

public int zoomRate = 40;

állami float panSpeed ​​= 0.3f;

állami float zoomDampening = 5.0f;

privát float xDeg = 0.0f;

privát float yDeg = 0.0f;

privát float currentDistance;

privát float desiredDistance;

privát kvaterniócsoport currentRotation;

privát kvaterniócsoport desiredRotation;

privát kvaterniócsoport forgás;

privát Vector3 helyzetben;

void indítása # 40; # 41; # 123; init # 40; # 41; ; # 125;

void OnEnable # 40; # 41; # 123; init # 40; # 41; ; # 125;

public void init # 40; # 41;

// Ha nincs cél, hozzon létre egy ideiglenes célt „távolság” a fényképezőgép aktuális nézőpont

ha # 40;. célpont # 41;

GameObject go = new GameObject # 40; "Cam Target" # 41; ;

menni. átalakítani. pozíció = transzformálására. pozíció + # 40; átalakítani. előre * távolság # 41; ;

target = menni. átalakítani;

távolság = Vector3. távolság # 40; átalakítani. helyzetbe. célt. pozíció # 41; ;

// biztos, hogy megragad a jelenlegi fordulatok, mint kiindulási pont.

pozíció = transzformálására. helyzetben;

forgatóképesség = transzformálására. forgás;

currentRotation = transzformálására. forgás;

desiredRotation = transzformálására. forgás;

xDeg = Vector3. szög # 40; Vector3. jobbra. átalakítani. jobb # 41; ;

yDeg = Vector3. szög # 40; Vector3. fel. átalakítani. fel # 41; ;

* Camera logika LateUpdate csak frissítés után minden karakter mozgását logika kezelték.

void LateUpdate # 40; # 41;

// Ha vezérlés és az Alt és a Közel-gombot? ZOOM!

ha # 40; Bemenet. GetMouseButton # 40; 1 # 41; # 41;

desiredDistance - = bemenet. GetAxis # 40; „Egér X” # 41; * Time. deltaTime * * zoomRate 0.125f * Mathf. Abs # 40; desiredDistance # 41; ;

// Ha az egér középső és a bal alt választjuk? ORBIT

else if # 40; Bemenet. GetMouseButton # 40; 0 # 41; # 41;

xDeg + = bemenet. GetAxis # 40; „Egér X” # 41; * XSpeed ​​* 0.02f;

yDeg - = bemenet. GetAxis # 40; „Egér Y” # 41; * YSpeed ​​* 0.02f;

// bilincs a függőleges tengelyen a pályára

yDeg = ClampAngle # 40; yDeg, yMinLimit, yMaxLimit # 41; ;

// beállított kamera forgatás

desiredRotation = négy részből. Euler # 40; yDeg, xDeg, 0 # 41; ;

currentRotation = transzformálására. forgás;

forgatóképesség = négy részből. Lerp # 40; currentRotation, desiredRotation, Time. deltaTime * zoomDampening # 41; ;

átalakítani. forgatóképesség = forgás;

// másként, ha az egér középső van kiválasztva, akkor pan útján átalakítja a cél screenspace

else if # 40; Bemenet. GetMouseButton # 40; 2 # 41; # 41;

// megragad a forgatás a kamera, így tudunk lépni egy ál helyi XY tér

célt. forgatóképesség = transzformálására. forgás;

célt. fordít # 40; Vector3. jobb * - Beviteli. GetAxis # 40; „Egér X” # 41; * panSpeed # 41; ;

célt. fordít # 40; átalakítani. up * - Beviteli. GetAxis # 40; „Egér Y” # 41; * PanSpeed, Space. világ # 41; ;

// befolyásolja a kívánt zoom távolságot, ha dobunk a görgő

desiredDistance - = bemenet. GetAxis # 40; „Egér ScrollWheel” # 41; * Time. deltaTime * * zoomRate Mathf. Abs # 40; desiredDistance # 41; ;

// bilincs a zoom min / max

desiredDistance = Mathf. fogó # 40; desiredDistance, MINDISTANCE, maxDistance # 41; ;

// A simítását zoom, lerp távolság

currentDistance = Mathf. Lerp # 40; currentDistance, desiredDistance, Time. deltaTime * zoomDampening # 41; ;

// számolja pozíció alapján az új currentDistance

pozíció = cél. álláspontja - # 40; forgás * Vector3. előre * currentDistance + targetOffset # 41; ;

átalakítani. pozíció = helyzetben;

private static úszó ClampAngle # 40; float szög, float min, lebegnek max # 41;

ha # 40; szög <- 360 )

ha # 40; szög> 360 # 41;

visszatér Mathf. fogó # 40; szög, min, max # 41; ;


Mivel már nagyon kevés (vagy inkább egyáltalán nem.) Jártas programozó, ő nem tudja kezelni. Az egyetlen dolog, tudta, hogy megtalálja a fórum - jobb csinálni keresztül Raycast.
Hogyan akasztani egy script minden háló.
Kérem, mondja meg, hogy melyik irányba én ásni. Vagy már a kész megoldást.
Lehet, hogy elég lesz, hogy kiegészítse a script, hogy már súlya a kamera és a kontrollok ez most.

Itt található ilyen kód

public class DebugScript. MonoBehaviour # 123;
privát bool _debug = true;
void frissítése # 40; # 41;
# 123;
ha # 40; Bemenet. GetMouseButtonUp # 40; 0 # 41; # 41;
# 123;
Ray Ray = Camera. fő. ScreenPointToRay # 40; Bemenet. mousePosition # 41; ;
RaycastHit hit;
ha # 40; Fizika. Raycast # 40; Ray, ki hit, 100 # 41; # 41;
# 123;
ha # 40; _debug # 41; Debug. DrawLine # 40; ray. eredetű. hit. pont # 41; ;
ha # 40; hit. ütköztető. gameObject. tag == "MyTag" # 41;
hit. ütköztető. gameObject. renderer. anyag. color = szín. zöld;
# 125;
# 125;
# 125;
# 125;

De Unity esküszik a sorban:

Ray Ray = Camera. fő. ScreenPointToRay # 40; Bemenet. mousePosition # 41; ;

NullReferenceException
UnityEngine.Camera.ScreenPointToRay (Vector3 pozíció) (a C: /BuildAgent/work/842f9557127e852/Runtime/ExportGenerated/Editor/UnityEngineCamera.cs: 267)

sajnos semmit nem tettem azt mondja
example.Update () (a Eszközök / example.cs: 10)

Talán ez az, ami a kód volt írva egy korábbi változatát Unity. Most már verzió 3.4

Most is elérhető), de nem elég az ütköztető a létesítményben. Már szerzett. Köszönöm szépen.
Most lenne a teljesség az eredeti problémát, és tanulni -, hogy kikapcsolja a kiválasztás az első kiválasztott elem, ha kiválasztja a következő. tartalmazzák az átláthatóságot tárgyak, elrejteni őket, és kívánatos, hogy megzavar mindannyian.
Talán, például ugyanazt a forgatókönyvet, de hozzátéve, hogy ez?

Zapialsya programozás során + html!


Azt inkább alkalmas egyszerű és működik, de nem találom, hogyan kell visszatérni az eredeti anyag. Ahogyan lehetetlen visszatérni az eredeti anyag, és a segítségével: -

public class DebugScript. MonoBehaviour # 123;
privát bool _debug = true;
void frissítése # 40; # 41;
# 123;
ha # 40; Bemenet. GetMouseButtonUp # 40; 0 # 41; # 41;
# 123;
Ray Ray = Camera. fő. ScreenPointToRay # 40; Bemenet. mousePosition # 41; ;
RaycastHit hit;
ha # 40; Fizika. Raycast # 40; Ray, ki hit, 100 # 41; # 41;
# 123;
ha # 40; _debug # 41; Debug. DrawLine # 40; ray. eredetű. hit. pont # 41; ;
ha # 40; hit. ütköztető. gameObject. tag == "MyTag" # 41;
hit. ütköztető. gameObject. renderer. anyag. color = szín. zöld;
# 125;
# 125;
# 125;
# 125;

Ez a lehetőség azért kényelmes, mert nem kell, hogy tegye a script minden háló.