如何在统一脚本中移动单独的对象?

时间:2016-08-18 23:31:57

标签: c# unity3d unityscript

我正在尝试在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;
        }
    }
}

2 个答案:

答案 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));  
    } 
}

这会从团队类中移动对象。但不是从玩家输入中做到的。