我正在尝试在Unity中编写一个可以移动游戏中其他对象的C#脚本。我在下面尝试了这个代码,但它没有用。错误是说当前上下文中不存在REDpos,RRDpos,RADpos和RCDpos。请帮我弄清楚如何解决这个问题!我是abeginner,很抱歉,如果它真的很明显。
这是我的代码:
using UnityEngine;
using System.Collections;
public class TeamSelect : MonoBehaviour {
public GameObject RCD;
public GameObject RAD;
public GameObject RED;
public GameObject RRD;
// Use this for initialization
void Start () {
RCD = GameObject.Find("RCD");
RAD = GameObject.Find("RAD");
RED = GameObject.Find("RED");
RRD = GameObject.Find("RRD");
}
// Update is called once per frame
void Update () {
RCDpos = RCD.transform.position.x;
RADpos = RAD.transform.position.x;
REDpos = RED.transform.position.x;
RRDpos = RRD.transform.position.x;
if (Input.GetKey("right")) {
RCDpos = RCDpos - 0.1;
RADpos = RADpos - 0.1;
REDpos = REDpos - 0.1;
RRDpos = RRDpos - 0.1;
}
if (Input.GetKey("left")) {
RCDpos = RCDpos + 0.1;
RADpos = RADpos + 0.1;
REDpos = REDpos + 0.1;
RRDpos = RRDpos + 0.1;
}
}
}
答案 0 :(得分:0)
当然,他们不存在......你从未定义过它们:\
RCDpos = RCD.transform.position.x;
RADpos = RAD.transform.position.x;
REDpos = RED.transform.position.x;
RRDpos = RRD.transform.position.x;
在将内容分配给RCDpos RADpos REDpos RRDpos之前你必须定义它们,你只定义了RCD RAD RED RRD GameObject
在定义GameObjects之后尝试添加它:
Vector3 RCDpos;
Vector3 RADpos;
Vector3 REDpos;
Vector3 RRDpos;
以这种方式修改您的更新:
RCDpos = new Vector3(RCD.transform.position.x,0,0);
RADpos = new Vector3(RAD.transform.position.x,0,0);
REDpos = new Vector3(RED.transform.position.x,0,0);
RRDpos = new Vector3(RRD.transform.position.x,0,0);
我认为应该工作。
答案 1 :(得分:0)
试试这个:
class Obj : MonoBehaviour
{
//public so other classes can get it
public Vector3 pos = transform.position;
void Update ()
{
//keeps pos updated
pos = transform.position;
}
public void move (Vector3 vect)
{
//moves player
transform.position += vect;
}
}
class team
{
public Obj obj;
void Start ()
{
obj.move(new Vector3(0f,0f,0f));
}
}
这会从团队类中移动对象。但不是从玩家输入中做到的。