使用标记无法在Unity上运行来移动GameObject

时间:2018-08-04 05:01:02

标签: c# unity3d

我知道这是一个菜鸟问题,但是无论如何,只有一种学习方法。

我在Unity中创建了一个空的GameObject,并附加了一个脚本,该脚本应该移动一个立方体(我的玩家),并给我的立方体加上标签“玩家”。创建多维数据集后,我希望能够移动多维数据集而不必将脚本放在多维数据集本身上。当脚本放到多维数据集上时,它可以毫无问题地移动(我知道这可能是应该做的,但是对于尝试学习新事物的人,我想这样做)。

Player Controller script

Cube properties

在无法通过Google找到答案之后,我们将不胜感激!

谢谢


更新!


这是现在的文本代码,因为被要求输入。

    public class GameCoreController : MonoBehaviour {

            private GameObject PlayerMove;
            public Rigidbody rb;

            void Start ()
            {
                 PlayerMove = GameObject.FindGameObjectWithTag("Player");
                 rb = GetComponent<Rigidbody>(); 
            }

            void Update()
            {
                 // character movement 
                 if (Input.GetKey(KeyCode.W))
                 {
                      PlayerMove.transform.Translate(0, 0, 0.25f);
                 }

                 if (Input.GetKey(KeyCode.S))
                 {
                      PlayerMove.transform.Translate(0, 0, -0.25f);
                 }

                 if (Input.GetKey(KeyCode.A))
                 {
                      PlayerMove.transform.Translate(-0.25f, 0, 0);
                 }

                 if (Input.GetKey(KeyCode.D))
                 {
                      PlayerMove.transform.Translate(0.25f, 0, -0);
                 }
             }

我已经从以前更新了代码,使其包含PlayerMove.transform.Translate,但是在移动多维数据集注释时仍然存在相同的问题。我还将立方体和GameCoreController的场景截图包括在内。空的GameObject包含应该控制多维数据集的脚本。 Cube scene GameVoreController scene

再次感谢您的帮助。


更新2!


删除多维数据集并将其重新插入场景后,它现在移动。谢谢大家的帮助。

2 个答案:

答案 0 :(得分:1)

多维数据集不会移动的原因是,在代码中您没有移动其transform,而是移动了将此脚本附加到的游戏对象的transform

transform.Translate移动此脚本附加到的游戏对象的变换。因此,如果要移动多维数据集,只需将transform.Translate更改为PlayerMove.transform.Translate,这将移动PlayerMove游戏对象(即带有您的“ Player”标签的多维数据集)的变换它

答案 1 :(得分:0)

^以上所有。另外,在屏幕截图中,您的刚体未设置为“ is kinematic”。这意味着物理将仍然适用于它(如重力)。经验法则:如果您有一个运动物体,碰撞很重要,那么它将需要一个刚体和一个对撞机。如果对象不是通过物理命令移动的(例如,rigidbody.AddForce()),而是直接按原样进行操作,则将刚体的“ isKinomatic”属性设置为true。