Jastreb Geschrieben 15. Mai 2012 Melden Share Geschrieben 15. Mai 2012 Hallo alle, habe schon gegoogelt und selbst probier zu machen aber funktioniert trotzdem nicht. mein Problem: Ich will so machen, dass wenn ich im spiel auf einen Gegner/Spieler drücke das ich ihn anvisieren kann damit er als Target an Shooter Script angehängt wird und ihn dann ab schissen kann. kann mir jemand da helfen, einen C# Script hier rein postet? hier noch ein beispiel. also wenn man einen Gegner anvisiert ist, soll man nicht automatisch hinter dem Gegner her fliegen, sonderst wenn man den Gegner anvisiert hat, dass mein Schiff/Spieler immer zu dem Gegner sich dreht und wenn man CTRL Taste drückt soll man nur die Drehung Verfolgung abschalten. Beispiel Video: Mein Game: http://www.youtube.com/watch?v=nAnmIkrO4dQ Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
damuddamc Geschrieben 15. Mai 2012 Melden Share Geschrieben 15. Mai 2012 du glaubst nicht ernsthaft das dir hier jemand nen fertiges Script postet oder? Aber als Tip, schau dir mal Transform.LookAt an, damit kannst du ein Objekt durch übergeben einens Vector3 auf diesen Punkt blicken lassen... sollte dann genauso scheiße aussehen wie bei dark orbit damit mein ich das sich das schiff ohne eine Verzögerung in der Drehung direkt auf diesen Punkt ausrichtet und sich beispielsweise nicht erst umdrehen muss! Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Jastreb Geschrieben 20. Mai 2012 Autor Melden Share Geschrieben 20. Mai 2012 ok, habe das mit Transform.LookAt hinbekommen, aber wenn ich einen anderen Player anvisieren wie kann ich es nur Manuel machen, mein Problem ist das ich es nicht hinbekommen, dass wenn ich auf einen Player drauf drücke, damit der dann als targer für Transform.LookAt reinkommt. bitte bitte hilft. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 20. Mai 2012 Melden Share Geschrieben 20. Mai 2012 Bitte versuche es noch einmal auf deutsch. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Jastreb Geschrieben 21. Mai 2012 Autor Melden Share Geschrieben 21. Mai 2012 ^^ Es soll so sein: wenn ich auf ein GameObject (Spieler) drauf click, soll er als target ins script rein gesetzt werden, hier noch mal auf einem screen: http://s14.directupload.net/images/120521/objr3ysg.jpg Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Mark Geschrieben 21. Mai 2012 Melden Share Geschrieben 21. Mai 2012 Wo genau kommst du nicht weiter? Hast du bereits das Objekt welches du anklickst per Script? Wenn ja hast du alles was du benötigst: - Komponente bei der das aktuell ausgewählte Objekt gesetzt werden soll suchen - das neue ausgewählte Objekt bei der Komponente setzen - wenn nötig alles Abhängige Updaten Scheitert es allerdings schon daran im Spiel durch einen Klick ein Objekt zu bekommen welches ausgewählt wurde, dann solltest du dir die Unity Script Reference ansehen, explizit kannst du ja nach: - OnMouseDown suchen, welches nur eine Methode ist die in ein Script gehört und welche aufgerufen wird sobald man mit der linken (!) Maustaste das zugehörige Objekt anklickt (benötigt ein Collider am Objekt und ein Script welches OnMouseDown implementiert). - Physics.Raycast, hiermit kannst du einen Test in die Szene machen welches Objekt von einem Strahl getroffen wird, in der Unity Script Reference dürfte es sogar ein Beispiel geben wie man damit Objekte unter der Maus findet. Bitte sage uns woran es hakt, je mehr Informationen desto besser, und lass dir ruhig Zeit beim schreiben der Antwort, ausformulierte Beiträge sind hilfreicher (auch für uns) als Beiträge die vor Panik strotzen. Unter anderem wirken Panikbeiträge wie Nasse Pudel, hässlicher als normale Pudel, sie schrecken ab Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Jastreb Geschrieben 21. Mai 2012 Autor Melden Share Geschrieben 21. Mai 2012 ich benutze dieses script aber habe bei den auch noch paar problemen und zwar ich kann damit mehrere Objecte anklicken die den tag: Selected und Unselected haben, dann habe ich noch ein problem, wenn der Object den tag "Selected" hat soll er mit "LookAt" auf den Selected Object schauen, bekomme aber es auch nicht hin #pragma strict var clicked : boolean = false; var hit : RaycastHit; var target : Transform; var SelectAttack : Transform; function Update() { target.transform.LookAt(SelectAttack); if(Input.GetMouseButtonDown(0) && collider.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), hit, Mathf.Infinity)) { clicked = !clicked; if(tag == "Selected") tag = "Unselected"; else tag = "Selected"; Debug.Log("clicked" + (clicked? "" : " off")); } } Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Mark Geschrieben 21. Mai 2012 Melden Share Geschrieben 21. Mai 2012 Wieso gehst du überhaupt über die Tags? Ich würde mir die angeklickten Objekte (wenn es denn mehrere geben darf) in eine Liste sammeln und beim deselektieren diese aus der Liste wieder entfernen. Ich gehe aber erstmal davon aus, dass du nur 1 selektiertes zur gleichen zeit haben möchtest. Daher würde ich das Script so aufpinseln: #pragma strict var target : Transform; var SelectAttack : Transform; function Update() { if(Input.GetMouseButtonDown(0)) { var hit : RaycastHit; if (collider.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), hit, Mathf.Infinity)) { SelectAttack = hit.transform; } else { SelectAttack = null; } } if (SelectAttack) { target.transform.LookAt(SelectAttack); } } Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Jastreb Geschrieben 21. Mai 2012 Autor Melden Share Geschrieben 21. Mai 2012 supper ^^ danke schon mal für den script. aber ich kann dann ja nur mich selbst anklicken und tag war dafür da damit ich dann nur die objecte ancklicken darf die den tag .... haben und noch ne frage geht die .js code auch in C#? weil in .js kann ich die dann nicht mit dem Player.IO Server verbinden Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Mark Geschrieben 21. Mai 2012 Melden Share Geschrieben 21. Mai 2012 Du kannst das natürlich auch so in C# machen. Du kannst mit dem Script alles anklicken was einen Collider hat, wieso du nur dich selbst anklicken kannst verstehe ich nicht ganz. Wenn du Objekte Filtern möchtest gibt es diverse überladungen von der Raycast Methode die das für dich übernehmen können. Entweder über die LayerMask (letzter Parameter von Raycast) oder Manuell über das Ergebniss von RaycastAll: http://unity3d.com/support/documentation/ScriptReference/Physics.RaycastAll.html Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Jastreb Geschrieben 21. Mai 2012 Autor Melden Share Geschrieben 21. Mai 2012 so ich bedanke mich bei "Marrrk", habe jetzt alles hinbekommen THX^^ Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Archiviert
Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.