Jump to content
Unity Insider Forum

Würfel bleiben nicht wo sie bleiben sollten


Ricky-W

Recommended Posts

Also was ich erreichen möchte:(im Video sieht man den falschen Effekt) Ich würfle, die Würfel sind gefallen, ich will nochmals würfeln, Würfel in den Becher (klappt bis hier gut), will ich nochmal würfeln , schausen die Würfel plötzlich unter den Tisch.

Die scripts (obacht, bin kein scripter und murgse so vor mich hin und hoffe irgendwie gehts).

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Setposition : MonoBehaviour {
	
    public Berechnungsscript boolvariabel;	
	
	Vector3 StartPoint;
	// Use this for initialization
	void Start () {
		StartPoint = transform.position;
	}
	
	// Update is called once per frame
	void Update () {
		print("Bin im Script" + boolvariabel.setze);
	if (boolvariabel.setze){
			
		transform.position = StartPoint;
		
		}
	}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Animation1 : MonoBehaviour {
	public Animator animator;
	public AudioClip WurfSound;
	public int TeilSumme = 0;
	public int Spieler = 1;
	public Text SpielerName;
	public Berechnungsscript boolvariabel;
	public bool setze;
	// Use this for initialization
	void Start () {
		SpielerName.text = "Ricky-W";
		animator = GetComponent<Animator>();
	}
	public void Rutteln () {
	 animator.SetTrigger("Ruttel1");
		
		this.GetComponent<AudioSource>().Play();
	}
	public void Wuerfeln () {
	boolvariabel.setze = false;              //    Hier wird die boolvariabel auf false gesetzt
		animator.SetTrigger("Wurf1");
		this.GetComponent<AudioSource>().clip = WurfSound;
		this.GetComponent<AudioSource>().Play();
		
	}
	public void Weiter () {
	
		print("Habe Weiter gedrückt");
		
	}
	// Update is called once per frame
	void Update () {
		
	}
	
}

Neu hochgeladen

Link zu diesem Kommentar
Auf anderen Seiten teilen

Jup, die variabel wird auf true gesetzt. Es funkt ja soweit wie, aber wenn die Würfel in den Becher fallen sollten, rassen sie nur durch, paarmal bleibt einer im Tisch stecken.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Berechnungsscript : MonoBehaviour {
int summe=0;
public Animation1 animationscript;
	public bool setze;
  public Text SummeText;
	public Text SpielerName;
  void Update(){
   // hier machste tolle dinge 
  }
  public void Addiere(int zahl){
    summe+=zahl; // einfach die übermittelte Zahl der Summe dazu addieren
    print(summe); // sollte jetzt eine höhere Zahl sein
	SummeText.text = "" + summe; 
  }
	public void Fertig () {
		//  Punkte auswertung *********************************************
		
		
		// Würfelpositionieren ***********************
		setze = true;                                      // Variabel auf true gesetzt
		
	//  Spielernamen Gebung *********************************************	
		
		animationscript.Spieler ++;
		if (animationscript.Spieler>4){
			animationscript.Spieler=1;
		}
	
		Debug.Log (animationscript.Spieler);
		if (animationscript.Spieler == 1){
			SpielerName.text = "Ricky-W";
	}
	if (animationscript.Spieler == 2){
			SpielerName.text = "Peter";
	}
		if (animationscript.Spieler == 3){
			SpielerName.text = "Sybille";
	}
		if (animationscript.Spieler == 4){
			SpielerName.text = "Alfons";
	}
		
		 print("Habe Fertig gedrückt" + animationscript.Spieler);
		
	}
}

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich weiß ja nicht, was du da bei deinen Animationen tust, aber kann es sein, dass du die Körper über die Animationsspuren manipulierst? Man kann über eine Animation alles Mögliche machen. Vielleicht manipulierst du ja auch die Schwerkraft.
Jedenfalls würde ein Rigidbody nicht einfach verschwinden.
Du kannst ja einfach mal das Spiel pausieren, wenn die Würfel komische Sachen machen und dir die Objekte im Inspektor anschauen. Dann siehst du ja genau, ob der Würfel noch einen Rigidbody drauf hat und ob der Haken für die Gravitation noch an ist.
Vermuten ist doof. Kontrollieren ist super.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Du hast doch hoffentlich das doof nicht persönlich genommen?! So war es nämlich nicht gemeint, denn es bezieht sich nur auf das "Vermuten"!

Aber um aufs Problem zurück zu kommen. Wenn du die Rigidbodies auf Continous stellen musst, dann bewegen die sich aber recht schnell oder aber dein Boden ist wahnsinnig dünn. Hätte ich so nicht vermutet.
Was du aber auf jeden Fall noch machen solltest, ist den FixedTimeStep zu reduzieren. Der steht ja standardmäßig auf 0.02. Setz den mal auf 0.01 runter, denn dadurch wird der Berechnungsintervall vom Physiksystem schneller.
Bei 0.02 hast du 50 Berechnungen pro Sekunde und da kann es schon mal sein, dass die Würfel durch eine dünne Wand fallen können, weil bei der einen Berechnung der Würfel noch vor der Wand war und bei der nächsten dann schon dahinter. Deswegen den Wert einfach mal reduzieren um eben doppelt so oft zu berechnen.

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallöchen, klaro hab ich verstanden, das dein Doof nicht mir galt, soooo doof bin ich auch grad net B) ( Wortspiel :lol: ). Also der Tisch hat einen Box-Collider und ist sehr dick. Wie gesagt geht es wie es sollte, im Spiel sieht man es nicht aber im Editor hüpfen die Würfel immer rauf und runter, weil sie in der FixedUpdate ja immer wieder auf die Startposition gebeamt werden.

Aber nix gegen meinen schönen SpagettiCode . Jetzt kann ich weiter murcksen und auf das nächste Problem zusteuern.

Lg

Ricky-W

Link zu diesem Kommentar
Auf anderen Seiten teilen

Warum setzt du die Würfel denn immer wieder auf die Startposition. Du könntest auch einfach die Gravitation des RB per code solange ausschalten und die Velocity auf 0 setzen.

https://docs.unity3d.com/ScriptReference/Rigidbody-useGravity.html

https://docs.unity3d.com/ScriptReference/Rigidbody-velocity.html

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...