Jump to content
Unity Insider Forum

Stock schießen


schamamutz

Recommended Posts

Hallo Leute,

falls es dieses Thema schon gibt, bitte ich das zu entschuldigen. Ich habe mir Unity mal zum ausprobieren runtergeladen und muss sagen, dass es Spaß macht. Naja oder auch nicht :)

Ich bin ein blutiger Anfänger und habe mir daher auch zahlreiche Tutorials angeschaut und mir ein Spiel erstellt, indem ich eine Kugel rollen kann. Mit der Kugel kann man dann die Gegenstände aufsammeln, die dann verschwinden. 

Die aufgesammelten Gegenstände (sofern man welche aufgesammelt hat) sollen nun nach vorne(links,rechts) geworfen werden(aber das kommt erst danach), ausgehend von der zu steuernden Kugel.

Das klappt auch halbwegs, aber meine geclonten "Holzstöcker" fallen einfach durch die Spielfäche (mit der Bande und der Spielerkugel interagieren die Holzstöcker) und irgendwie hab ich das Gefühl, dass die Stöcker komisch geschmissen werden, aber man sieht sie auch immer nur Kurz ;)

 

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

public class player : MonoBehaviour {

	public float ballSpeed;  //Spieler
	private Rigidbody rb;	 //Spieler
	private int count;		//Itemanzahl

	public GameObject stick; //GameObject mit Rigidbody(use Gravity on, Kinematic off)
							//				  Box Collider(is Trigger on) (hatte ich auch mal auf off, machte keinen Unterschied) 
							//				  Plane (Mesh Filter)
							//				  Mesh Renderer 

	// Use this for initialization
	void Start () {
		
		
		rb = GetComponent<Rigidbody> ();				
		count = 0;

	}
	
	
	// Update is called once per frame
	void FixedUpdate () {
		float xSpeed = Input.GetAxis("Horizontal");					
		float ySpeed = Input.GetAxis("Vertical");

		Vector3 movement = new Vector3 (xSpeed, 0.0f, ySpeed);
		
		rb.AddForce (movement * ballSpeed);

		
		if(Input.GetMouseButtonDown (0)) {							//Beim raufklicken der linken Maustaste
				
				
			if (count > 0){											
			
		

			GameObject stickClone = Instantiate(stick);	//Hier wird der Klon vom GameObject "stick" erzeugt. (geht mit und ohne (...) as GameObject )

			stick.transform.position =rb.transform.position + new Vector3 (0,0.9f,0);
	//		diesen Part verstehe ich nicht wirklich. Ich muss dem zu werfenden Gegenstand doch seinen Ausgangspunkt geben. Das wäre ja die Spielerkugel.

	//		wieso heißt es "stick.transform.position = " und warum nimmt man nicht den Klon "stickClone.transform.position = "? Möchte ich dem nicht die Position geben, von der aus er loslegen soll?
	//		"=rb.transform.position" -- Position der Spielerkugel ?! (in der Schule hieß es immer, Frage oder Antwort -- Antwort!)
	//      "+ new Vector3 (0,0.9f,0)" -- Beeinflussung der Startposition

			Rigidbody rb_clone = stickClone.GetComponent<Rigidbody>(); 
			//Hier gebe ich dem Klon einen Körper(aber warum? nehme ich den Part weg funktioniert es nicht. Ich habe dem Stick doch ein Rb gegeben, warum hat der Klon den nicht?) 
			
			rb_clone.AddForce(( rb.transform.forward +new Vector3 (0, 0.3f, 0)) * 500,ForceMode.Force); 
	//	"rb_clone.AddForce" -- ich gebe dem rb_clone einen "Schubs"
	//	"(( transform.forward +new Vector3 (0, 0.3f, 0))"	-- ((nach vorne von der Spielerkugelposition + einer Bewegung nach oben))
	// " * 500 "-- die Schubskraft || 
	// ,ForceMode.Force -- so ganz verstehe ich das auch nicht, also schon, da die Beschreibung eindeutig ist, aber ich kann diesen Part auch weglassen
			
			
			count = count -1;
			}

			else {

			Debug.Log("Du kannst nichts verholzen!");

			}
		}

	}

	void OnTriggerEnter(Collider other) {
	
		if (other.gameObject.CompareTag ("Pick Up")) {
			other.gameObject.SetActive (false);
			count = count +1;
			
		}

	}
	


}

 

Danke schonmal im Vorraus und ich nehme auch gerne Schlagwörter entgegen. Aber selbst komme ich grad nicht weiter.

 

Mfg

 

P.S.: ich habe den Code jetzt unter void Update(), ich habe den Unterschied bestimmt schon 10 mal gelesen, aber jetzt vielleicht verstanden. Das werfen sieht zumindest besser aus :)

        Die Klone sind auch nicht weg, sondern die Kamera kann sie nicht mehr einfangen

 

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Werfen funktioniert und ist defenitive besser. Ich habe auch was bei new Vector3 hinzugefügt.

 

Nur der Boden.... Ich hatte aus Unity das GameObject Plane erstellt und auf meine gewünschte größe skalliert. 

Ich würde das so verstehen, dass eine PLane ein flacher Cube ist.

Ich habe jetzt mal eine große Fläche vom Cube als Spielfeld unter dem eigentlichen Spielfeld erstellt und siehe  da, sie bleiben liegen.

Allerdings mit einer Kleinigkeit... Wenn mein Holzstock( flach auf dem Spielfeld liegt, fängt das Bild an zu zucken. Wodran kann das liegen? Einfach daran, dass es auch eine Plane ist und ziemlich flach.

Mach ich das mit einer Sphere,Cube funktioniert es einwandfrei.

Allerdings mit dem Ausgangspunkt, wie der Stick geworfen wird, ist mir immernoch nicht zu 100% klar, aber das finde ich noch herraus :)

Danke und entschuldigt bitte, dass ich hier solch einen Müll produziert habe

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Lädt...
×
×
  • Neu erstellen...