Unity: Warnungen bei Skript?
Hi,
ich mache zurzeit ein Spiel mit Unity und stoße dabei vor ein Problem.
Ich habe nun ein Skript für meinen Spieler, der sich aber trotz allem nicht bewegen oder springen will. Nun habe ich alle Fehlermeldungen abgearbeitet und es klappt immer noch nicht.
Das einzige was bleibt, sind drei Warnungen:
Assets\Scripts\FirstPersonController.cs(7,36): warning CS0649: Field 'FirstPersonController.speed' is never assigned to, and will always have its default value 0
Assets\Scripts\FirstPersonController.cs(9,36): warning CS0649: Field 'FirstPersonController.JumpraycastDistance' is never assigned to, and will always have its default value 0
Assets\Scripts\FirstPersonController.cs(8,33): warning CS0649: Field 'FirstPersonController.jumpforce' is never assigned to, and will always have its default value 0
Ich habe leider absolut keine Ahnung, was das mir sagen soll. Ok, doch, habe ich, aber wie beseitige ich sie?
Programm:
public class FirstPersonController : MonoBehaviour
{
[SerializeField]
private float speed;
[SerializeField]
private float jumpforce;
[SerializeField]
private float JumpraycastDistance;
private Rigidbody rb;
private void Start()
{
rb = GetComponent<Rigidbody>();
}
private void update()
{
Jump();
}
private void Move()
{
float hAxis = Input.GetAxisRaw("Horizonta");
float vAxis = Input.GetAxisRaw("Vertical");
Vector3 movement = new Vector3(hAxis, 0, vAxis) * speed;
Vector3 newPosition = rb.position + rb.transform.TransformDirection(movement);
rb.MovePosition(newPosition);
}
private void Fixeduptade()
{
Move();
}
private void Jump()
{
if (Input.GetKeyDown(KeyCode.Space))
{
if (IsGrounded())
{
rb.AddForce(0, jumpforce, 0, ForceMode.Impulse);
}
}
}
private bool IsGrounded()
{
Debug.DrawRay(transform.position, Vector3.down * JumpraycastDistance, Color.blue);
return (Physics.Raycast(transform.position, Vector3.down, JumpraycastDistance));
}
}
Ich hoffe wirklich, mir kann jemand helfen!
Ein riesiger Dank geht an jeden, der zumindest darüber nachgedacht hat, mir zu helfen oder mir sogar vielleicht noch helfen kann!
1 Antwort
Die Warnungen sind eigentlich ziemlich eindeutig und die jeweils zugehörigen Lösungen so einfach, sodass ich mich an der Stelle doch gerade frage, inwiefern du bereits die Grundlagen von C# beherrscht. Wenn du dich damit noch nicht wirklich befasst haben solltest (und stattdessen sofort in Unity hineingesprungen bist), würde ich dir zu dem Schritt rückwärts raten. Unity ist nicht dafür ausgelegt, dir C# beizubringen.
Was deinem Skript zuerst einmal fehlt, ist, dass du den besagten Feldern einen Wert über 0 zuweist. Da die Felder als serialisierbar gekennzeichnet wurden (du solltest zudem den camelCase-Stil einhalten), kann der Wert auch über den Inspektor gesetzt werden.
Du hast, wie ich sehe, aber auch die Methodenbezeichner Update und FixedUpdate falsch geschrieben.
Also soll ich statt denn Nullen einfach die gewollten Zahlen einsetzen?
PPS.: Noch einen Tippfehler hast du beim Einholen der horizontalen Eingabeachse (fehlendes l).
PS.: Um das Skript flexibel zu halten, sollte die Belegung der Felder mit Werten auf jeden Fall über den Inspektor erfolgen.
Ich habe auch mittlerweile bemerkt das ich es langsamer angehen sollte un damit die c# Grundkenntnisse zu erlernen ,dennoch würd ich dich gerne Fragen wie ich denn Fehler korrigieren könnte um zumindest das kleine Projekt was ich jetzt da hatte.