Wie behebe ich in Unity den Fehler CS1061 ('Player' does not contain a definition for 'GetPosition' ...)?
Ich programmiere erst seit ein paar Wochen und habe mithilfe von YouTube und dem Internet mich durch Stunden des Codens und ähnlichem geboxt.
Doch nun, nachdem ich mein erstes wirkliches Projekt gestartet habe, stoppt mich nun der Fehler
CS1061:Assets/LevelGenerator.cs(28,45): error CS1061: 'Player' does not contain a definition for 'GetPosition' and no accessible extension method 'GetPosition' accepting a first argument of type 'Player' could be found (are you missing a using directive or an assembly reference?).
Es wäre superduper megamäßig cool, wenn sich jemand meganettes meinen Code ansehen könnte, um mir zu sagen was mein Fehler ist.
Dankeschön an jeden, der sich die Zeit nimmt, um mir zu helfen. Dankeschön. 😃
Hier nun mein Code (er soll eine unendliche Welt generieren):
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class LevelGenerator : MonoBehaviour {
private const float PLAYER_DISTANCE_SPAWN_LEVEL_PART = 200f;
[SerializeField]
private Transform levelPart_1;
[SerializeField]
private Transform levelPart_Start;
[SerializeField]
private Player player;
private Vector3 lastEndPosition;
private void awake()
{
lastEndPosition = levelPart_Start.Find("EndPosition").position;
int startingSpawnLevelParts = 5;
for (int i = 0; i < startingSpawnLevelParts; i++)
{
}
}
private void Update()
{
if (Vector3.Distance(player.GetPosition(), lastEndPosition) < PLAYER_DISTANCE_SPAWN_LEVEL_PART)
{
// Spawn another level part
SpawnLevelPart();
}
}
private void SpawnLevelPart()
{
Transform lastLevelPartTransform = SpawnLevelPart(lastEndPosition);
lastEndPosition = lastLevelPartTransform.Find("EndPosition").position;
}
private Transform SpawnLevelPart(Vector3 spawnPosition)
{
Transform levelPartTransform = Instantiate(levelPart_1, spawnPosition, Quaternion.identity);
return levelPartTransform;
}
}
PS.: Danke an jeden, der hilft oder sich das hier auch nur wenigstens durchliest. 😃
3 Antworten
Kannst du bitte deine Implementierung von "Player" posten? Die Fehlermeldung bedeutet, dass es diese Methode in der Klasse "Player" nicht gibt. Falls du die Klasse selber geschrieben hast, musst du eine solche Methode auch selber implementieren.
Alternativ, wenn "Player" von MonoBehaviour erbt, kannst du auch das hier machen, sofern es inhaltlich das Gleiche bedeutet:
player.gameObject.transform.position
Du musst in deinem Player Script erstmal deinem player eine Instanz geben
" private Player instance;"(die musst du nach dem Script benennen)
die musst du dann noch in der Awake Funktion(müsste aber auch bei der Start Funktion gehen, hab ich nie getestet) deinem Spieler zuweisen:
instance=this;
zudem brauchst du noch das hier:
public Vector3 GetPosition()
{
return transform.position;
}, dann sollte das gehen.
Hättest du aber auch heraus gefunden, wenn du dir in dem Projektordner von "CodeMonkey" mal die anderen Scripts angeschaut hättest, nur als Hinweis, falls du weitere Tutorials von ihm schaust :)
Deiner Player Klasse fehlen die Methoden (oder sie sind nicht sichtbar?).
Aber du stellst ja hier sehr viele Fragen und scheinst keine Fortschritte zu machen. Wäre es nicht sinnvoll, sich erstmal mit C# zu befassen?
Diese Fehler kann man übrigens auch googlen ;)