我知道这是一个菜鸟问题,但是无论如何,只有一种学习方法。
我在Unity中创建了一个空的GameObject,并附加了一个脚本,该脚本应该移动一个立方体(我的玩家),并给我的立方体加上标签“玩家”。创建多维数据集后,我希望能够移动多维数据集而不必将脚本放在多维数据集本身上。当脚本放到多维数据集上时,它可以毫无问题地移动(我知道这可能是应该做的,但是对于尝试学习新事物的人,我想这样做)。
在无法通过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包含应该控制多维数据集的脚本。
再次感谢您的帮助。
更新2!
删除多维数据集并将其重新插入场景后,它现在移动。谢谢大家的帮助。
答案 0 :(得分:1)
多维数据集不会移动的原因是,在代码中您没有移动其transform
,而是移动了将此脚本附加到的游戏对象的transform
。
transform.Translate
移动此脚本附加到的游戏对象的变换。因此,如果要移动多维数据集,只需将transform.Translate
更改为PlayerMove.transform.Translate
,这将移动PlayerMove
游戏对象(即带有您的“ Player”标签的多维数据集)的变换它
答案 1 :(得分:0)
^以上所有。另外,在屏幕截图中,您的刚体未设置为“ is kinematic”。这意味着物理将仍然适用于它(如重力)。经验法则:如果您有一个运动物体,碰撞很重要,那么它将需要一个刚体和一个对撞机。如果对象不是通过物理命令移动的(例如,rigidbody.AddForce()),而是直接按原样进行操作,则将刚体的“ isKinomatic”属性设置为true。