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