C# 使用不起作用的标签移动游戏对象

C# 使用不起作用的标签移动游戏对象,c#,unity3d,C#,Unity3d,我知道这是个很难回答的问题,但不管怎样,学习的方法只有一种 我在Unity中创建了一个空的游戏对象,附加了一个脚本来移动一个立方体(我的玩家),并给了我的立方体一个标签“玩家”。创建多维数据集后,我希望能够在不必将脚本放在多维数据集本身的情况下移动多维数据集。当脚本在多维数据集上时,它会毫无问题地移动(我知道应该这样做,但为了尝试学习新的东西,我想这样做) 在未能通过谷歌找到答案后,任何洞察都将不胜感激 多谢各位 更新 这里的代码现在是文本,因为它是被要求的 public cla

我知道这是个很难回答的问题,但不管怎样,学习的方法只有一种

我在Unity中创建了一个空的游戏对象,附加了一个脚本来移动一个立方体(我的玩家),并给了我的立方体一个标签“玩家”。创建多维数据集后,我希望能够在不必将脚本放在多维数据集本身的情况下移动多维数据集。当脚本在多维数据集上时,它会毫无问题地移动(我知道应该这样做,但为了尝试学习新的东西,我想这样做)

在未能通过谷歌找到答案后,任何洞察都将不胜感激

多谢各位


更新


这里的代码现在是文本,因为它是被要求的

    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);
                 }
             }
公共类GameCoreController:MonoBehavior{
私人游戏对象玩家移动;
公共刚体;
无效开始()
{
PlayerMove=GameObject.FindGameObjectWithTag(“玩家”);
rb=GetComponent();
}
无效更新()
{
//人物运动
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场景的屏幕截图;空的游戏对象,其中包含控制立方体的脚本。

再次感谢你们的帮助


更新2



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

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


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

^以上所有内容。另外,在屏幕截图中,您的刚体未设置为“是运动的”。这意味着物理仍将应用于它(如重力)。经验法则:如果您有一个碰撞非常重要的移动对象,它将需要一个刚体和一个碰撞器。如果该对象未使用物理命令移动(例如rigidbody.AddForce())但与其像现在这样操纵变换,不如将rigidbody“isKinomatic”属性设置为true。

此外,此脚本仍需要附加到场景中的某个位置(这是一种单行为!)@Draco18s脚本被附加到场景中的一个空游戏对象上。这样行吗?@K.J.Shamberger一个空游戏对象是“场景中的某个地方”,所以是的。@Caramiriel当然可以!刚刚更新了post.allow rb=PlayerMove.GetComponent();