Jump to content
Unity Insider Forum

Peanut

Members
  • Content Count

    38
  • Joined

  • Last visited

  • Days Won

    1

Everything posted by Peanut

  1. Die ws3FasterShootingMethode wird wie du schon sagst über einen Button aufgerufen. Die Variable w3SFasterShooting soll anfangs auf 0 stehen und immer wenn man auf den Button drückt um 1 hoch springen damit man in die nächste IfAnweisung kommt.
  2. Hallo allerseits, ich habe ein kleines Problem un zwar möchte ich in einem Shop Buttons haben die man mehrmals benutzen kann(1 mal Klicken 50 Gold 1. Power Up , 2 mal Klicken 100 Gold 2.Power Up usw...).Nur scheinbar wird die void Methode für den Butten jeden Frame aufgerufen sodass ich bis zur letzten Kaufmöglichkeit durchkomme ohne es zu wollen. Hat jemand ne Idee :)? Hier der Code using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class ShopController : MonoBehaviour { //3ShootShit public int PointAmount; public Text ThreeShootFaster; public int w3SFasterShooting, w3SMoreDamage, w3SMoreShoots; private float timer; // Start is called before the first frame update void Start() { PointAmount = PlayerPrefs.GetInt("Points"); ThreeShootFaster.text = "30"; w3SFasterShooting =PlayerPrefs.GetInt("w3sFS"); w3SMoreDamage = PlayerPrefs.GetInt("w3sMD"); w3SMoreShoots = PlayerPrefs.GetInt("w3sMS"); } // Update is called once per frame void Update() { } public void ws3FasterShootingMethode() { if (w3SFasterShooting == 1) { ThreeShootFaster.text = "30"; PointAmount -= 30; PlayerPrefs.SetFloat("3ShootTimer", 0.75f); PlayerPrefs.SetInt("Points", PointAmount); PlayerPrefs.SetInt("w3sFS", 2); w3SFasterShooting = PlayerPrefs.GetInt("w3sFS"); timer = 1; Debug.Log("Miepen1"); } if (w3SFasterShooting == 2) { ThreeShootFaster.text = "50"; PointAmount -= 70; PlayerPrefs.SetFloat("3ShootTimer", 0.5f); PlayerPrefs.SetInt("Points", PointAmount); PlayerPrefs.SetInt("w3sFS", 3); StartCoroutine(Wait1Sec()); w3SFasterShooting = PlayerPrefs.GetInt("w3sFS"); Debug.Log("Miepen2"); } if (w3SFasterShooting == 3) { ThreeShootFaster.text = "SOLD"; PointAmount -= 100; PlayerPrefs.SetFloat("3ShootTimer", 0.25f); PlayerPrefs.SetInt("Points", PointAmount); Debug.Log("Miepen3"); timer = 1; } } IEnumerator Wait1Sec() { yield return new WaitForSeconds(1f); } } LG Peanut
  3. Könnte dir das helfen?
  4. public float gewuenschtetiefe; private bool Tiefe; Update(){ if(transform.position.z == gewuenschtetiefe) { Tiefe = true; } if(Tiefe) { Transform.Translate(0,0,-speed*Time.deltaTime,0) if(transform.position.z == 0f) { Tiefe = false; } { else{ Transform.Translate(0,0,speed*Time.deltaTime,0) } } } } Musst es halt iwie in dein Script inplementieren :). Im Prinzip lässt man mit Transform.Translate solange das GameObjekt nach in die Tiefe fahren bis die gewünschte tiefe erreicht wurde und dann umgekehrt bis 0 erreicht wurde. Hoffe konnte helfen. LG Peanut
  5. Warum lässt du die Partikel nicht auseinander fliegen (explosionsartig) und lässt sie danach nach Beispielweise 1 Sekunde wieder am Partikelsystem sammeln. Dieses lässt du dann nach 0,75 Sekunden Richtung Zähler fliegen. Müsste eig so aussehen wie gewollt Denke ich LG Peanut
  6. LWRP? SRP? Noch nie gehört. Was meinste damit? :3
  7. Ohne Rigidbody wird sich da nicht viel tun
  8. Ohne Rigidbody wird auch keine Physik auf ihm ausgeübt sprich keine Gravity also wird er nicht runterfallen Also brauchst du einen Rigidbody Du könntest im Script die Constrains deines Rigidbodys aendern In dem Fall den Y Constrain
  9. Hast du es den mit einem Samsung Gerät ausprobiert?
  10. Weiß ich tatsächlich nicht weil ich das noch nie gemacht habe. Aber glaube so lange du bei allen Componenten bei 3D bleibst sollte das gehen. Nur musst du in deinem Code dann immer daran denken.
  11. Beide Collider dürfen keine Trigger sein.Einfach das Häckchen entfernen. Machst du ein 2D Game? Also hast du beim erstellen des Projektes 2D oder 3D ausgewählt?
  12. Dein Code for (int k = 0; k < numberOfDots; k++) { //Each point of the trajectory will be given its position x1 = ballPos.x + shotForce.x * Time.fixedDeltaTime * (dotSeparation * k + dotShift); //X position for each point is found y1 = ballPos.y + shotForce.y * Time.fixedDeltaTime * (dotSeparation * k + dotShift) - (-Physics2D.gravity.y / 2f * Time.fixedDeltaTime * Time.fixedDeltaTime * (dotSeparation * k + dotShift) * (dotSeparation * k + dotShift)); //Y position for each point is found dots[k].transform.position = new Vector3(x1, y1, dots[k].transform.position.z); //Position is applied to each point } /*Du musst bei y1 unterschieden ob rb2d.velocity.y < 0 oder rb2d.velocity.y > 0 ist weil es ist ja ein unterschied ob der Ball hoch oder runter fliegt Somit musst du das mit nem if Statement an der Stelle unterscheiden*/ for (int k = 0; k < numberOfDots; k++) { //Each point of the trajectory will be given its position x1 = ballPos.x + shotForce.x * Time.fixedDeltaTime * (dotSeparation * k + dotShift); //X position for each point is found if(rb2d.velocity.y < 0) { //y1 = berechnung für die flugbahn rb2d.velocity.y < 0 } if(rb2d.velocity.y > 0){ //y1 = berechnung für die flugbahn rb2d.velocity.y > 0 } dots[k].transform.position = new Vector3(x1, y1, dots[k].transform.position.z); //Position is applied to each point } Hoffe so ist es verständlicher :3
  13. Frag was du fragen willst. Jeder hat mal angefangen dafür ist ein Forum da. Du benötigst an deinem Player und deiner Plattform einen Collider je nach dem einen einfachen Collider oder wenn du ein 2D Game machst einen 2DCollider. Dazu benötigt dein Player noch einen Rigidbody(oder einen Rigidbody2D je nach Game).
  14. Wie Jomnitech schon gesagt hat müsste man genau wissen wie dus haben willst. Wenn du das Partikelsystem richtung Zähler fliegen lässt ist es glaube ich viel einfacher umzusetzten als die Partikel selbst dahin zu schicken.
  15. Was passiert wenn du deine Charakter Controller Variable public machst und den Charakter Controller manuell im Inspector deiner Variable zuteilst. So könnte man unterscheiden ob der Fehler am Charakter Controller selbst liegt oder am Code. Oder das was Sascha sagt das macht mehr Sinn xD
  16. Naja du kannst ja ne Variable implementieren die Speichert in welchem Lvl du bist und wenn du Game Over bist gehst du in die GameOverScene und überprüfst dann mit der Variable in welchem Lvl du warst und kannst dann so das gewünschte Lvl neu starten.
  17. Ich muss da Jomnitech zustimmen du machst dir das leben schwerer als es sein muss. Stell dir vor du willst die Scallierung der Buttons ändern das dauert dann wieder unnötig lange. Ich würde tatsächlich mit den Unity Buttons mit verändertem Sprite arbeiten. Aber wenn du das tatsächlich so machen willst schau dir mal die Erweiterung: TextMeshPro im Unity Store an. (ist for free) Damit haste mehr UI-Optionen als in Vanilla Unity vielleicht geht es mit dem Tool besser. LG Peanut :3
  18. Ja genau das ist mein Problem. Das Script soll nicht auf dem Gameobject liegen Die Exception wird durch diese Zeile ausgelöst (hätte ich dazu schreiben sollen) : WaveNummer.text= "Wave" + I_nextWave;
  19. Hallöchen Liebes UnityForum, ich habe ein Problemchen mit TextMeshPro.Unzwar möchte ich das UI Text Element von TextMeshPro in einem Script benutzen das meine Wellen an Gegner zählt und an einem Gameobject gebunden ist.Nun habe ich schon das gefühlt halbe Internet durchforstet und habe nichts gefunden um das Problem zu lösen. Vielleicht könnt ihr mir ja helfen . Ist wahrscheinlich etwas komplett Banales. public TextMeshProUGUI WaveNummer; private void Start() { F_waveCountdown = F_timeBetweenWaves; WaveNummer = gameObject.GetComponent<TextMeshProUGUI>(); } void Update() { WaveNummer.text= "Wave" + I_nextWave; Das ist der relevante Code. Ich habe natürlich das package TMPro implementiert.
  20. Ich denke man muss nur diese Zeile anpassen(wie du ja selbst schon vermutet hast) : y1 = ballPos.y + shotForce.y * Time.fixedDeltaTime * (dotSeparation * k + dotShift) - (-Physics2D.gravity.y / 2f * Time.fixedDeltaTime * Time.fixedDeltaTime * (dotSeparation * k + dotShift) * ( Hast du die Zeile selber geschrieben? Weil Time.deltaTime*Time.deltaTime macht für mich irgendwie wie keinen Sinn :P(falls dus erklären kannst) Ich glaube du musst in der for Schleife mit einem If-Statement unterscheiden ob der Ball prositive rb2d.velocity.y hat oder eine negative und jenachdem welcher Fall eintritt du die yAxis der Dots anders berechnen musst.
  21. Hab noch nix davon gehört das es sowas Unity intern gibt. Warum benutzt du den mehrere Terrains? Kannst du nicht ein Riesiges machen? Wie gehst du den damit um? LG Peanut
  22. Btw kannst du statt immer Input.GetKey(w), Input.GetKey(s) etc. zu benutzen einfach mit Input.GetAxis(""Vertical") und das selbe für Horizontal. Finde so wird der Code viel übersichtlicher und es geht beim zweiten mal schneller. Kannst es ja mal nachlesen wen du willst https://docs.unity3d.com/ScriptReference/Input.GetAxis.html Gibt auch genug Youtube Tutorials dafür.
  23. Könntest du das gesamte Script fürs Berechnen der Flugbahn posten? Ich weiß z.B, gerade ned woher dotSeparation und dotShift. Und was ich auch nicht was der z-Wert von dots[k].transform.position = new Vector3(x1, y1, dots[k].transform.position.z); machen soll Wenn ichs verstehe können wirs bestimmt zsm lösen
  24. Die einzige Möglichkeit die mir einfällt wäre. Je nachdem welche Kameraposition du gerade hast , du die Inputs für deinen Ingame Charakter änderst. Es könnte auch sein das die Inputs allgemein vom WorldSpace abhängig sind.Evtl gibt ne Möglichkeit das man diese von der Kamera abhängig machen kann. Da müsstest du aber mal nach googlen. MFG Peanut ^^
×
×
  • Create New...