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!