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ó.