.... does not contain a definition for ...
Hi. I'm having a problem with a script in Unity 5. I use C# :
Assets/Scripts/Tetromino.cs(73,76): error CS1061: Type Tetromino' does not contain a definition for
position' and no extension method position' of type
Tetromino' could be found (are you missing a using directive or an assembly reference?)
WARNING: Too much unused lines.
These are my scripts:
using UnityEngine; using System.Collections;
public class Game : MonoBehaviour {
public static int gridWidth = 10;
public static int gridHeight = 20;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
}
public bool CheckIsInsideGrid (Vector2 pos) {
return ((int)pos.x >= 0 && (int)pos.x < gridWidth && (int)pos.y >= 0);
}
public Vector2 Round (Vector2 pos) {
return new Vector2 (Mathf.Round(pos.x), Mathf.Round(pos.y));
}
}
using UnityEngine; using System.Collections;
public class Tetromino : MonoBehaviour {
float fall = 0;
public float fallSpeed = 1;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
CheckUserInput ();
}
void CheckUserInput () {
if (Input.GetKeyDown(KeyCode.RightArrow)) {
transform.position += new Vector3(1, 0, 0);
if (CheckIsValidPosition()) {
} else {
transform.position+= new Vector3(-1, 0, 0);
}
} else if (Input.GetKeyDown(KeyCode.LeftArrow)) {
transform.position += new Vector3(-1, 0, 0);
if (CheckIsValidPosition()) {
} else {
transform.position+= new Vector3(1, 0, 0);
}
} else if (Input.GetKeyDown(KeyCode.UpArrow)) {
transform.Rotate (0, 0, 90);
if (CheckIsValidPosition()) {
} else {
transform.Rotate (0, 0, -90);
}
} else if (Input.GetKeyDown(KeyCode.DownArrow) || Time.time - fall >= fallSpeed) {
transform.position += new Vector3(0, -1, 0);
fall = Time.time; // Ca sa nu mai cada imediat
if (CheckIsValidPosition()) {
} else {
transform.position += new Vector3(0, 1, 0);
}
}
}
bool CheckIsValidPosition () {
foreach (Tetromino mino in transform) {
Vector2 pos = FindObjectOfType<Game>().Round (mino.position); // HERE is the error
if (FindObjectOfType<Game>().CheckIsInsideGrid (pos) == false) {
return false;
}
}
return true;
}
}
Thank you!
Answer by TBruce · Apr 18, 2016 at 06:01 PM
The problem is this statement
foreach (Tetromino mino in transform)
even though it should look more like this
foreach (Transform mino in transform)
it does not make much sense because you are using foreach with transform.
Your answer
Follow this Question
Related Questions
Make GameObject “attach” properly? 0 Answers
Bullet destroy 2 game object intent one Unity 2D 0 Answers
Distance is always zero 0 Answers
pressing/turning something in VR to do stuff 0 Answers
OnMouseDown not working! 0 Answers