Jump to content
Unity Insider Forum

lenn0707070

Members
  • Posts

    22
  • Joined

  • Last visited

Profile Information

  • Gender
    Male

Recent Profile Visitors

265 profile views

lenn0707070's Achievements

Member

Member (2/3)

0

Reputation

  1. Vielen Dank! ich werde es probieren. Ich melde mich dann mal zurück. Danke schonmal.
  2. Hi. Ich habe ein Problem. Ich versuche in einem 2D-Spiel, dass man mit dem Spieler einen Gegner zerstören kann, indem man oben drauf springt. Und wenn man den Spieler von der Seite berührt soll man selber sterben. Ich habe dem Gegner einen Collider gegeben und dem Gegner dann ein Parent gegeben, in dem ein zweiter Collider drin ist. Jetzt habe ich ein Problem: wenn ich in einem Skript, welches eine Komponente des Gegners ist, OnCollisionEnter2D abfrage wird auch der Collider im Parent einbezogen. Wie kann ich dies verhindern?
  3. Ich habe nun mithilfe eines Tutorials ein Speicher-System erstellt. Nun habe ich aber das Problem, dass ich es nicht hinbekomme, das dieser Skript nicht nur die Daten eines Objektes Speichert sondern die Daten vieler/mehrere Objekte speichert. Data Skript: using System.Collections; using System.Collections.Generic; using UnityEngine; [System.Serializable] public class PlayerData { public float[] position; public bool isLamping; public PlayerData(Player player) { position = new float[3]; position[0] = player.transform.position.x; position[1] = player.transform.position.y; position[2] = player.transform.position.z; isLamping = player.isLamping; } } Save Skript: using UnityEngine; using System.IO; using System.Runtime.Serialization.Formatters.Binary; public static class SaveSystem { public static void SavePlayer(Player player) { BinaryFormatter formatter = new BinaryFormatter(); string path = Application.persistentDataPath + "/PlayerData.data"; FileStream stream = new FileStream(path, FileMode.Create); PlayerData data = new PlayerData(player); formatter.Serialize(stream, data); stream.Close(); } public static PlayerData LoadPlayer() { string path = Application.persistentDataPath + "/PlayerData.data"; if (File.Exists(path)) { BinaryFormatter formatter = new BinaryFormatter(); FileStream stream = new FileStream(path, FileMode.Open); PlayerData data = formatter.Deserialize(stream) as PlayerData; stream.Close(); return data; } else { Debug.LogError("Save file not found in " + path); return null; } } } and Button Skript: public void SavePlayer() { SaveSystem.SavePlayer(this); } public void LoadPlayer() { PlayerData data = SaveSystem.LoadPlayer(); Vector3 position = new Vector3(data.position[0], data.position[1], data.position[2]); FlashLight.SetActive(data.isLamping); transform.position = position; } Was müsste ich hier ändern um es möglich zu machen mehrere Objekte zu speichern?
  4. Danke für die Rückmeldungen. Ich habe noch eine Frage dazu. Ich habe auf Youtube ein Tutorial gefunden, wo man die daten in eine Binary-File speichert. Ist dies auch eine Gute Lösung?
  5. Ich arbeite gerade an einem Spiel indem man rumlaufen kann und Objekte einsammeln und wieder ablegen kann. Man soll das Spiel speichern können, sodass man bei seinem letzten Spielstand weiter spielen kann. Wie kriege ich das in Unity hin?
  6. ich habe das ganze schon mit parents probiert: using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlattformMoving : MonoBehaviour { private Vector3 startPos; private Vector3 newPos; public GameObject player; public CircleCollider2D bc2D; [SerializeField]private LayerMask layermask; public float speed; public float Lenght; // Start is called before the first frame update void Start() { player = GameObject.FindGameObjectWithTag("Player"); startPos = transform.position; bc2D = player.GetComponent<CircleCollider2D>(); } // Update is called once per frame void FixedUpdate() { newPos = startPos; newPos.x = newPos.x + Mathf.PingPong(Time.time * speed, Lenght) ; transform.position = newPos; if (IsGrounded()) { //Makes the GameObject "newParent" the parent of the GameObject "player". player.transform.parent = transform; //Display the parent's name in the console. Debug.Log("Player's Parent: " + player.transform.parent.name); // Check if the new parent has a parent GameObject. if (transform.parent != null) { //Display the name of the grand parent of the player. Debug.Log("Player's Grand parent: " + player.transform.parent.parent.name); } } else { DetachFromParent(); } } public void DetachFromParent() { // Detaches the transform from its parent. player.transform.parent = null; } private bool IsGrounded() { RaycastHit2D raycasthit = Physics2D.BoxCast(bc2D.bounds.center, bc2D.bounds.size, 0f, Vector2.down, .01f, layermask); return raycasthit.collider != null; } } das hat aber nicht funktioniert. Warum? und wie könnte man es schaffen? Danke
  7. Ich möchte, dass er nur springen kann wenn er die Plattform von oben berührt, sodass er nicht mehr springen kann wenn er die Plattform von der linken oder rechten Seite berührt. Hier ist der Movement Skript: [SerializeField] private LayerMask layermask; public float speed; public float jumpForce; private bool IsRunningLeft = false; private bool IsRunningRight = false; //private Animator anim; private BoxCollider2D bc2D; bool isJumping; Rigidbody2D rb; void Start() { rb = GetComponent<Rigidbody2D>(); //anim = GetComponent<Animator>(); bc2D = GetComponent<BoxCollider2D>(); } public void FixedUpdate() { if (IsRunningLeft) { //anim.Play("RunAnimOfPlayer"); transform.rotation = Quaternion.Euler(0, 180, 0); transform.position += Vector3.left * speed * Time.deltaTime; } else { //anim.SetBool("IsNotRun", true); } if (IsRunningRight) { //anim.Play("RunAnimOfPlayer"); transform.rotation = Quaternion.Euler(0, 0, 0); transform.position += Vector3.right * speed * Time.deltaTime; } else { //anim.SetBool("IsNotRun", true); } if (IsGrounded() && Input.touchCount > 0) { for(int i = 0; i < Input.touchCount; i++) { var touch = Input.touches[i]; if (touch.position.x > Screen.width / 2) { rb.velocity = Vector2.up * jumpForce; } } } } public void SetIsRunningLeftToTrue() { IsRunningLeft = true; } public void SetIsRunningLeftToFlase() { IsRunningLeft = false; } public void SetIsRunningRightToTrue() { IsRunningRight = true; } public void SetIsRunningRightToFlase() { IsRunningRight = false; } private bool IsGrounded() { RaycastHit2D raycasthit = Physics2D.BoxCast(bc2D.bounds.center, bc2D.bounds.size, 0f, Vector2.down, .01f, layermask); return raycasthit.collider != null; } hat jemand eine Idee wie das funktionieren könnte?
  8. Wenn ich mein Unity 2d Spiel im Play Store veröffentlichen möchte und ein release erstellen möchte kommt beim hochladen der APK-datei ein Fehler:"Du hast ein APK oder Android App Bundle hochgeladen, das im Debug-Modus signiert wurde. Lade ein APK oder Android App Bundle hoch, das im Release-Modus signiert wurde." Ich habe einen Keystore und ein Key erstellt als ich mein erstes Spiel hochgeladen habe. Damals habe ich den selber Fehler bekommen und ihn dann gelöst. Nun hab ich aber vergessen wie ich das getan habe. Für mein jetziges Spiel habe ich den selben Keystore verwendet aber einen andere Key erstellt. Wie behebe ich den Fehler?
  9. Habe ich gemacht! Wenn ich die App starte wird aber nicht die Debug.Log der ersten Start Funktion des GameManager ausgegeben. Damit meine ich, dass wenn ich die App Starte ich keine ausgaben in der Konsole vorfinde. Dies deutet entweder darauf hin, dass er in die Start Funktion garnicht erst rein geht oder aber das Die Console sich erst nach der Start Funktion mit dem Handy verbindet. In der Konsole muss man ja erst das gerät auf dem das spiel läuft auswählen. Man kann sich aber nur verbinden wenn das Spiel läuft daher kann es sein das ich mich mit dem handy erst nach der Ausführung der Start Funktion verbunden hab, weshalb nichts ausgegeben wird. Als ich dann auf dem Knopf gedrückt habe wurden die Debug.Logs der OnClickPlayButtun-Funktion ausgegeben
  10. Die OnClickPlayButton Funktion sollte ausgeführt werden. Könnte es sein , dass es nicht möglich ist, weil Der PlayerPref Int: „savepoint“ noch nicht definiert ist?
  11. Ich habe es jetzt mit einem Debug Build versucht. Drücke ich den Knopf kommt folgender Fehler: NullReferenceException: Object reference not set to an instance of an object.
  12. Man sieht, dass der Button dunkel wird wenn man ihn drückt. Also funktioniert die Funktion des Buttons nicht. Unity remote habe ich schon schon ausprobiert. Aber nur auf dem Apple Handy allerdings sollte es keinen Unterschied machen ob Samsung oder IPhone. In unity Remote klappt es. Die erste Szenen wird geladen.
  13. Ich habe ein 2D Spiel in Unity 2020.1.15f1 erstellt. Es Gibt ein Haupt Menü und 3 Level. Geht man in den Unity Editor im Menü des Spieles auf Play, wird die erste Szene(Level1) geladen. Nun habe ich eine Apk Datei des Spieles erstellt und das ganze auf einem android versucht. Das hat aber nicht funktioniert. Ich habe den Knopf gedrückt und nichts ist passiert. Warum?
  14. Vielen Dank. Aber das Problem ist ein anderes ich habe ein Junp and run Spiel, welches nur bspw. den Highscore speichert. Damit meine ich, dass das Spiel nicht auf den Standort des Spielers zugreift oder etwas derartiges tut. Es speichert nur den Highscore des Spielers mit Hilfe von Playerprefs. Brauch man dafür auch schon eine Datenschutzerklärung?
×
×
  • Create New...