I’m following a tutorial making my first RTS game, I’ve came across an error which I can’t seem to figure out…
"Assets/Scripts/Player/UserInput.cs(11,36): error CS0120: An object reference is required to access non-static member ‘UnityEngine.Transform.root’
What am I doing wrong, sorry for noob question, I’ve posted the UserInput.cs code below.
using UnityEngine;
using System.Collections;
using RTS;
public class UserInput : MonoBehaviour {
private Player player;
// Use this for initialization
void Start () {
player = Transform.root.GetComponent<Player> ();
}
// Update is called once per frame
void Update () {
}
private void MouseActivity() {
if (Input.GetMouseButtonDown (0)) LeftMouseClick();
else if(Input.GetMouseButtonDown(1)) RightMouseClick();
}
private void LeftMouseClick() {
if(player.hud.MouseInBounds()) {
GameObject hitObject = FindHitObject ();
Vector3 hitPoint = FindHitPoint ();
if(hitObject && hitPoint != ResourceManager.InvalidPosition) {
if(player.SelectedObject) player.SelectedObject.MouseClick(hitObject, hitPoint, player);
else if(hitObject.name!="Ground") {
WorldObject WorldObject = hitObject.transform.root.GetComponent<WorldObject>();
if(WorldObject){
//we knowno selected object
player.SelectedObject = WorldObject;
WorldObject.SetSelection(true);
}
}
}
}
}
private void RightMouseClick() {
if (player.hud.MouseInBounds () && !Input.GetKey (KeyCode.LeftAlt) && player.SelectedObject) {
player.SelectedObject.SetSelection (false);
Player.SelectedObject = null;
}
}
private GameObject FindHitObject() {
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if(Physics.RayCast(ray, out hit)) return hit.collider.gameObject;
return null;
}
private Vector3 FindHitPoint() {
Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast (ray, out hit))
return hit.point;
return ResourceManager.InvalidPosition;
}
}