Jump to content
Unity Insider Forum
  • Announcements

    • Lars

      Allgemeine Forenregeln   03/13/2017

      Forenregeln Nimm dir bitte einen Moment um die nachfolgenden Regeln durchzulesen. Wenn du diese Regeln akzeptierst und die Registration fortsetzen willst, klick einfach auf den "Mit der Registrierung fortfahren"-Button. Um diese Registration abzubrechen, klick bitte einfach auf den "Zurück" Button deines Browsers. Wir garantieren nicht für die Richtigkeit, Vollständigkeit und Brauchbarkeit der Nachrichten und sind auch nicht dafür verantwortlich. Die Beiträge drücken die Meinung des Autors des Beitrags aus, nicht zwangsläufig das, wofür die Forensoftware steht. Jeder Nutzer, der denkt, dass ein veröffentlichter Beitrag unzulässig bzw. störend ist, ist aufgefordert uns unverzüglich per E-Mail zu kontaktieren. Wir haben das Recht störende Beiträge zu löschen und bemühen uns, das in einem realistischem Zeitraum zu erledigen (sofern wir beschlossen haben, dass die Löschung notwendig ist). Du akzeptierst, durchgehend während der Nutzung dieses Services, dass du dieses Forum nicht dazu missbrauchen wirst, Inhalte zu veröffentlichen, welche bewusst falsch und/oder verleumderisch, ungenau, beleidigend, vulgär, hasserfüllt, belästigend, obszön, sexuell belästigend, bedrohlich, die Privatsphäre einer Person verletzend oder in irgend einer Art und Weise das Gesetz verletzen. Des Weiteren akzeptierst du, dass du keine urheberrechtlich geschützte Inhalte ohne Erlaubnis des Besitzers in diesem Forum veröffentlichst. Mit dem Klick auf den "Mit der Registrierung fortfahren"-Button, akzeptierst du zudem unsere Datenschutzerklärung und stimmst der Speicherung deiner IP-Adresse und personenbezogenen Daten zu, die dafür benötigt werden, um dich im Falle einer rechtswidrigen Tat zurückverfolgen zu können bzw. permanent oder temporär aus dem Forum ausschließen zu können. Es besteht keine Pflicht zur Abgabe der Einwilligung, dies erfolgt alles auf freiwilliger Basis.   Zusatzinformationen Der Forenbetreiber hat das Recht, Nutzer ohne Angabe von Gründen permanent aus dem Forum auszuschließen. Des Weiteren hat er das Recht, Beiträge, Dateianhänge, Umfrage, Blogeinträge, Galleriebilder oder Signaturen ohne Angabe von Gründen zu entfernen. Mit der Registrierung verzichtest du auf alle Rechte an den von dir erstellten Inhalten, bzw. treten diese an das Unity-Insider.de und Unity-Community.de ab. Dies bedeutet im Klartext, dass das Unity-Insider.de und Unity-Community.de frei über deine Texte verfügen kann, sofern diese nicht wiederum die Rechte anderer verletzen. Es besteht weiterhin kein Anspruch von registrierten Nutzern bzw. ehemaligen registrierten Nutzern darauf, dass erstellte Inhalte und/oder die Mitgliedschaft (User) wieder gelöscht werden (Erhaltung der Konsistenz dieses Forums).   Einwilligungserklärung Wenn du mit der Speicherung deiner personenbezogenen Daten sowie den vorstehenden Regeln und Bestimmungen einverstanden bist, kannst du mit einem Klick auf den Mit der Registrierung fortfahren-Button unten fortfahren. Ansonsten drücke bitte Zurück. Stand: 07.03.2011

Zer0Cool

Members
  • Content count

    1,364
  • Joined

  • Last visited

  • Days Won

    94

Zer0Cool last won the day on January 21

Zer0Cool had the most liked content!

Community Reputation

276 Excellent

7 Followers

About Zer0Cool

  • Rank
    Advanced Member
  • Birthday 01/04/1974

Contact Methods

  • Website URL
    http://https://www.facebook.com/huginmuninstudios
  • Skype
    zer0f0rce

Profile Information

  • Gender
    Male
  • Location
    Germany

Recent Profile Visitors

2,985 profile views
  1. Teleporter

    Du kannst wenn deine Spieler einem bestimmten Layer (z.b. "Player") haben und dein Boden einen anderen (z.b. "Ground"), die Kollision zwischen beiden Spielern (Layern) verbieten . Die Kollision mit dem Boden bleibt dabei intakt, wenn der Boden einem anderen Layer zugeordnet ist. https://docs.unity3d.com/Manual/LayerBasedCollision.html Ground Player Player x o Ground x Kann man auch zur Laufzeit ändern, so daß man die Kollision zwischen 2 Spielern nach dem Transport auch wieder aktivieren kann.
  2. Rakete abfeuern

    Na ist doch supi, Problem gelöst
  3. Rakete abfeuern

    Ja genau. Das Prefab wurde als RB "geführt" und auch als RB gespawned, was aber völlig verkehrt ist. Vielleicht hat das bei einer älteren Unityversion mal funktioniert, ka?
  4. Rakete abfeuern

    Der hat anstatt ein Gameobject zu spawnen nur ein Rigidbody gespawnt und dadurch fehlten die Unterobjekte des Shells-Prefab. Zudem wurden Komponenten des Prefabs ebenfalls nicht instanziiert was noch zu zusätzlichen Fehlern führte ...
  5. Rakete abfeuern

    Naja, habs mir nur nebenbei angeschaut und war ja schnell gelöst, ist aber besser so, als wenn man 20 Posts schreibt statt es einmal richtig zu machen. So hier die Änderung des Skriptes. Schon komisch, das da so ein Fehler drin war. Du musst die "Complete Shell"-Prefab danach noch einmal neu aufs Skript ziehen! using UnityEngine; using UnityEngine.UI; namespace Complete { public class TankShooting : MonoBehaviour { public int m_PlayerNumber = 1; // Used to identify the different players. public GameObject m_Shell; // Prefab of the shell. public Transform m_FireTransform; // A child of the tank where the shells are spawned. public Slider m_AimSlider; // A child of the tank that displays the current launch force. public AudioSource m_ShootingAudio; // Reference to the audio source used to play the shooting audio. NB: different to the movement audio source. public AudioClip m_ChargingClip; // Audio that plays when each shot is charging up. public AudioClip m_FireClip; // Audio that plays when each shot is fired. public float m_MinLaunchForce = 15f; // The force given to the shell if the fire button is not held. public float m_MaxLaunchForce = 30f; // The force given to the shell if the fire button is held for the max charge time. public float m_MaxChargeTime = 0.75f; // How long the shell can charge for before it is fired at max force. private string m_FireButton; // The input axis that is used for launching shells. private float m_CurrentLaunchForce; // The force that will be given to the shell when the fire button is released. private float m_ChargeSpeed; // How fast the launch force increases, based on the max charge time. private bool m_Fired; // Whether or not the shell has been launched with this button press. private void OnEnable() { // When the tank is turned on, reset the launch force and the UI m_CurrentLaunchForce = m_MinLaunchForce; m_AimSlider.value = m_MinLaunchForce; } private void Start () { // The fire axis is based on the player number. m_FireButton = "Fire" + m_PlayerNumber; // The rate that the launch force charges up is the range of possible forces by the max charge time. m_ChargeSpeed = (m_MaxLaunchForce - m_MinLaunchForce) / m_MaxChargeTime; } private void Update () { // The slider should have a default value of the minimum launch force. m_AimSlider.value = m_MinLaunchForce; // If the max force has been exceeded and the shell hasn't yet been launched... if (m_CurrentLaunchForce >= m_MaxLaunchForce && !m_Fired) { // ... use the max force and launch the shell. m_CurrentLaunchForce = m_MaxLaunchForce; Fire (); } // Otherwise, if the fire button has just started being pressed... else if (Input.GetButtonDown (m_FireButton)) { // ... reset the fired flag and reset the launch force. m_Fired = false; m_CurrentLaunchForce = m_MinLaunchForce; // Change the clip to the charging clip and start it playing. m_ShootingAudio.clip = m_ChargingClip; m_ShootingAudio.Play (); } // Otherwise, if the fire button is being held and the shell hasn't been launched yet... else if (Input.GetButton (m_FireButton) && !m_Fired) { // Increment the launch force and update the slider. m_CurrentLaunchForce += m_ChargeSpeed * Time.deltaTime; m_AimSlider.value = m_CurrentLaunchForce; } // Otherwise, if the fire button is released and the shell hasn't been launched yet... else if (Input.GetButtonUp (m_FireButton) && !m_Fired) { // ... launch the shell. Fire (); } } private void Fire () { // Set the fired flag so only Fire is only called once. m_Fired = true; GameObject shellInstance = Instantiate (m_Shell, m_FireTransform.position, m_FireTransform.rotation); // Set the shell's velocity to the launch force in the fire position's forward direction. shellInstance.GetComponent<Rigidbody>().velocity = m_CurrentLaunchForce * m_FireTransform.forward; // Change the clip to the firing clip and play it. m_ShootingAudio.clip = m_FireClip; m_ShootingAudio.Play (); // Reset the launch force. This is a precaution in case of missing button events. m_CurrentLaunchForce = m_MinLaunchForce; } } }
  6. Rakete abfeuern

    Ich glaube das Spawnen der Shell ist schon verkehrt, hast du da etwas geändert (im Skript Tankshooting)? Er spawnt ein RB anstatt die komplette Shell (GameObject) und dadurch gibt es dann später auch Probleme mit den Skripten an der Shell ...
  7. Rakete abfeuern

    Mhh an Tank1 hängt ein "Tank Shooting" der ist aber deaktiviert... Der hat bei mir Tank4 geladen, vermutlich über PlayerPrefs ...
  8. Rakete abfeuern

    Da tut sich nix, in welchem Skript wird er Schuss ausgelöst? Sehe hier nur "Tank Movement" und "Tank Health" die an "Tank 4" hängen...
  9. Rakete abfeuern

    Wie schieß ich ein Projektile ab, der Panzer fährt irgendwie nur rum ?
  10. Rakete abfeuern

    Welche Scene soll ich laden, wo man den Fehler sehen kann?
  11. Gängige Unity3D Designpatterns (z.B. MVC)

    Die Frage ist vielleicht falsch gestellt, da GameObject/MonoBehaviours (in meinen Augen) bereits ein "Design Pattern" sind und daher das gängige Design Pattern in Unity (auch wenn das vielen nicht bewusst ist). Es macht aber durchaus Sinn sich davon zu lösen, da es oft nicht sehr performant ist. Wenn man das MVC auf Unity anwendet, dann gibt es in Unity quasi 2 Views. Die gerenderten Objekte und das UI. M + C werden in Unity dabei oft in einer Komponente vermischt. Möchte man beides Trennen, dann kann man diese in 2 Klassen auftrennen, eine Kontrollerklasse (Monobehavior) und eine Datenklasse (einfache C#-Klasse). Die Daten könnte man nochmals auftrennen in Szenendaten und Projektdaten. Szenendaten werden dabei als Instanz in der Szene gehalten, Projektdaten als Assets.
  12. Highscore-System mit 2 Spielern und 10 Runden

    Hier ein Skript für die Runden: using System.Collections; using System.Collections.Generic; using UnityEngine; public class GameController : MonoBehaviour { private bool gameRunning = false; private int maxRounds = 10; private int currentRound = 1; private int maxPlayers = 2; private int currentPlayer = 1; private int maxBalls = 2; private int currentBall = 1; void Update() { if (Input.GetMouseButtonDown(0)) { if (!gameRunning) { StartGame(); // Spiel starten } else { NextMove(); // Nächster Spielschritt } } } void StartGame() { print("Spiel neu gestartet!"); gameRunning = true; currentRound = 0; currentPlayer = 0; currentBall = 0; NextRound(); // Runde starten } void GameFinished() { print("Spiel beendet!"); gameRunning = false; } void NextMove() { if (currentBall < maxBalls) // Weitere Bälle spielen? { NextBall(); // Nächster Ball wird gespielt } else { if (currentPlayer < maxPlayers) // Nächster Spieler? { NextPlayer(); // Nächster Spieler kommt dran } else { NextRound(); // Nächste Runde starten } } } void NextPlayer() { currentPlayer++; print("Aktueller Spieler: " + currentPlayer); currentBall = 0; NextBall(); // Ball setzen } void NextRound() { currentRound++; if (currentRound > maxRounds) // Spiel beendet?! { GameFinished(); return; } print("Aktuelle Runde: " + currentRound); currentPlayer = 0; NextPlayer(); // Spieler setzen } void NextBall() { currentBall++; print("Aktueller Ball: " + currentBall); } void OnGUI() { if (gameRunning) { GUILayout.Label("Aktuelle Runde: " + currentRound); GUILayout.Label("Aktueller Spieler: " + currentPlayer); GUILayout.Label("Aktueller Ball: " + currentBall); } else { GUILayout.Label("Spiel starten mit linker Maustaste."); } } }
  13. Highscore-System mit 2 Spielern und 10 Runden

    Weil "PlayerPrefs.GetInt()" 0 liefert wenn zuvor nichts gespeichert wurde. Ich denke du musst "OnLevelComplete ()" aufrufen, dann sollte eigentlich "10000" als Top Score auftauchen: void Start () { score=0; OnLevelComplete(); }
  14. inGame Shop und GameObjects

    Kann man denke ich so machen, aber ich kenne dein Game nicht wirklich, daher schwer konkrete Tipps zu geben. Mach am besten auch noch einmal einen neuen Thread auf für ein neues Thema oder eine neue Fragestellung.
×