Hilfe bei Unity-Problemen (Skript)

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Hilfe bei Unity-Problemen (Skript)

    Anzeige
    Hi,

    ich denke mal ich bin hier richtig und es geht hier nicht nur um Banner, Avas und andere Designelemente. ;)

    Aus reinem Interesse experementiere ich derzeit mit Unity herum (ich weis Viele verfluchen es, aber was nimmt man als Laie sonst? ^^). Was Programmierung usw angeht kann ich nur mit wenig Wissen glänzen, aber irgendwann muss man ja damit mal anfangen und Meister sind noch nie vom Himmel gefallen. Einzige bisherige Erfahrungen sind die aus dem Informatikunterricht, die mich über Textadventure in C++ bzw Java nie herausgebracht haben. Aber egal, ich habe derzeit drei Probleme die ich nach stundenlangen Google-Suchen nicht lösen konnte und hoffe mir kann Jemand helfen. Erstmal das Skript:

    Quellcode

    1. var speed : float = 6.0;
    2. var jumpSpeed : float = 8.0;
    3. var gravity : float = 20.0;
    4. private var moveDirection : Vector3 = Vector3.zero;
    5. var Fadenkreuz :Texture2D;
    6. var Health :Texture2D;
    7. var Leben : float = 100.0;
    8. function Applydamage(damage:float){
    9. if(damage==0)
    10. return;
    11. Leben-=damage;
    12. if(Leben<=0){
    13. Destroy(gameObject);
    14. }
    15. }
    16. function Update() {
    17. Screen.lockCursor = true;
    18. var controller : CharacterController = GetComponent(CharacterController);
    19. if (controller.isGrounded) {
    20. // We are grounded, so recalculate
    21. // move direction directly from axes
    22. moveDirection = Vector3(Input.GetAxis("Horizontal"), 0,
    23. Input.GetAxis("Vertical"));
    24. moveDirection = transform.TransformDirection(moveDirection);
    25. moveDirection *= speed;
    26. if (Input.GetButton ("Jump")) {
    27. moveDirection.y = jumpSpeed;
    28. }
    29. }
    30. // Apply gravity
    31. moveDirection.y -= gravity * Time.deltaTime;
    32. // Move the controller
    33. controller.Move(moveDirection * Time.deltaTime);
    34. }
    35. function OnGUI()
    36. {
    37. GUI.Label(Rect(20,Screen.hight-50,Leben*1.5,20),Health);
    38. GUI.Label(Rect(Screen.width/2-10,Screen.height/2-10,20,20),Fadenkreuz);
    39. }
    Alles anzeigen


    Man sieht ein kleines Standard-Unity-Movement-Skript.
    Problem 1:
    Wenn ich die function OnGUI richtig verstanden habe müsste die eingefügte Textur für Health eine Höhe von 20 haben und mit jedem Treffer in der Breite kleiner werden. Bei meinen Tests schrumpft es jedoch generell in Breite und Höhe, oder habe ich beim Rect doch etwas falsch verstanden? Bisher meine ich nämlich:
    Rect(Abstand von Links, Abstand von Oben, Breite, Höhe),Textur)
    In meiner kleinen naiven Welt müsste es also genau so sein wie ich denke und nicht so wie es jetzt ist. ^^

    Problem 2:
    Ich hätte es gern, dass bei "A" und "D" der Körper um die Y-Achse rotiert, statt sich auf der Z-Achse zu bewegen, finde dazu aber garnichts, da die meisten Tuturials halt einfache Shooter zeigen, wo seitliche Bewegungen wünschenswert sind. Da ich wie gesagt beim skripten noch nicht so die Ahnung habe wäre es nett wenn da Jemand eine Lösung hat.

    Problem 3:
    Wird in dem Skript jetzt nicht gezeigt, daher hier das Damage-Skript:

    Quellcode

    1. function OnTriggerEnter(hit:Collider){
    2. if(hit.tag!="Player")
    3. {
    4. hit.SendMessage("Applydamage",10.0,SendMessageOptions.RequireReceiver);
    5. Destroy(gameObject);
    6. }
    7. }

    Der Spieler und der Gegner haben jeweils 100 Leben, der jeweilige Angriff zieht 10 Leben ab. Beide Seiten sterben nach 4 Treffern...finde den Fehler. ^^ Ok, der Rechenfehler ist schnell gefunden, aber woran kann es liegen?

    Nur schonmal zur Warnung, sollte sowas in diesen Bereich passen und ich sogar Hilfe bekommen, dann werde ich bestimmt noch öfter hier fragen...große Ideen, kleine Kenntniss, das übliche Problem bei sowas. :D

    Schonmal danke,
    Haali
    Alte Spiele neu verfilmt:
    Let's Plays von 1991 - 2014, hier ist für Jeden was dabei.
  • Also warum dein Leben auch in der Höhe kleiner wird, ist mir auch nicht ganz klar. Laut dem Code müsste es eigentlich funktionieren.
    Als kleine Notlösung könnte ich dir anbieten, dass du die 20 Pixel an Höhe als Konstante definierst und die dann dafür nimmst.

    Also:
    const int Hoehe=20;
    und dann unten:
    GUI.Label(Rect(20,Screen.hight-50,Leben*1.5,Hoehe),Health);

    Komisch ist auch, dass beide jeweils nach 4 Treffern sterben. Laut Code müsste das eigentlich so hinhauen.
    Bin derzeit leider auch noch nicht so weit in Programmieren, aber in ca. 6 Monaten kann ich es dir bestimmt sagen ^^


    mfG,
    Spoon