Hallo heren,
Ik wil in Unity een spelletje maken waarbij ik een ander materiaal aan een object geef terwijl ik deze aanraak. Dit om duidelijk aan te geven welk object je op dat moment selecteert. Tegelijkertijd komt er een menu boven mijn HTC Vive controller in beeld waarbij ik op "ignore" kan klikken.
Het werkt perfect, het highlight materiaal werkt perfect bij het aanraken van het object. Ook bij de controller weer uit het object halen werkt de highlight prima.Net zoals het menu. Alleen met de ignore knop op het menu selecteren werkt het niet. Het menu verdwijnt weer, maar de highlight gaat niet weg.
Het probleem hierbij is dat, het gehighlighte object ongeveer 1000x voor gaat komen. Dus 1 voor 1 in de inspector aangeven welk object het is, is geen optie. Op de objecten komt de code waarin de materialen verandert worden. Het aansturen komt op de scripts van de controller.
De code op de controllers:
De code op de gameObjecten:
Misschien zien jullie zo waar ik de fout in ga.
Ik wil in Unity een spelletje maken waarbij ik een ander materiaal aan een object geef terwijl ik deze aanraak. Dit om duidelijk aan te geven welk object je op dat moment selecteert. Tegelijkertijd komt er een menu boven mijn HTC Vive controller in beeld waarbij ik op "ignore" kan klikken.
Het werkt perfect, het highlight materiaal werkt perfect bij het aanraken van het object. Ook bij de controller weer uit het object halen werkt de highlight prima.Net zoals het menu. Alleen met de ignore knop op het menu selecteren werkt het niet. Het menu verdwijnt weer, maar de highlight gaat niet weg.
Het probleem hierbij is dat, het gehighlighte object ongeveer 1000x voor gaat komen. Dus 1 voor 1 in de inspector aangeven welk object het is, is geen optie. Op de objecten komt de code waarin de materialen verandert worden. Het aansturen komt op de scripts van de controller.
De code op de controllers:
code: Controllerscript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
| //Function to hide menu public void HideMenu() { showMenu = false; canvas.transform.position = CanvasPosition; disableHighlight(); } //When entering object with Controller void OnTriggerEnter(Collider Col) { showMenu = true; grabTxt.text = "Grab " + Col.name; } //When still touching Object with Controller void OnTriggerStay(Collider Col) { if (showMenu) { UpdateMenu(); } } //When leaving Object with Controller void OnTriggerExit(Collider Col) { showMenu = false; HideMenu(); disableHighlight(); } |
De code op de gameObjecten:
code: ObjectScript
1
2
3
4
5
6
7
8
9
10
11
12
13
| public void enableHighlight() { Debug.Log("highlight checked"); _oldMaterial = _meshRenderer.material; _meshRenderer.material = _highlightMaterial; } public void disableHighlight() { GameObject.FindGameObjectsWithTag("interactable"); _meshRenderer.material = _oldMaterial; Debug.Log("highlight UNchecked"); } |
Misschien zien jullie zo waar ik de fout in ga.
Canon 7D MII, 550D, Tokina 11-16mm F2.8, Sigma 17-70mm F2.8/4, Sigma 30MM F1.4, Canon 50mm 1.8 STM, Sigma 70-200 F2.8, En de bende eromheen