【问题标题】:How do I move separate objects in a unity script?如何在统一脚本中移动单独的对象?
【发布时间】:2016-08-18 23:31:56
【问题描述】:

我正在尝试在 Unity 中编写一个可以移动游戏中其他对象的 C# 脚本。我在下面尝试了这段代码,但没有奏效。错误是说 REDpos、RRDpos、RADpos 和 RCDpos 在当前上下文中不存在。请帮我弄清楚如何解决这个问题!我是初学者,很抱歉,如果它真的很明显。

这是我的代码:

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;
        }
    }
}

【问题讨论】:

    标签: c# unity3d unityscript


    【解决方案1】:

    当然它们不存在...你从未定义过它们:\

    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

    在你定义你的游戏对象之后尝试添加这个:

    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);
    

    我认为应该可以工作。

    【讨论】:

    • 哦,谢谢。但是变量是什么类/类型?
    • 已编辑,现在应该很清楚,如果对你有帮助,请投票给我的答案,ty
    【解决方案2】:

    试试这个:

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

    这会将对象从团队类中移出。但不会从玩家输入中做到这一点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-20
      • 2014-12-22
      • 2021-05-10
      • 1970-01-01
      • 1970-01-01
      • 2022-07-27
      相关资源
      最近更新 更多