【问题标题】:There is no 'Rigidbody2D' attached to the "Player" game object, but a script is trying to access it. (Unity)“玩家”游戏对象没有附加“Rigidbody2D”,但脚本正在尝试访问它。 (统一)
【发布时间】:2019-04-09 05:29:18
【问题描述】:

我对 C# 中的脚本非常陌生,我正在尝试向对象添加组件,但我不断收到此错误:

“玩家”游戏对象没有附加“Rigidbody2D”,但脚本正在尝试访问它。

这是我目前的代码:

void Start()
{
    GameObject.Find("Player");
    gameObject.AddComponent<Rigidbody2D>();
    Body = GetComponent<Rigidbody2D>();        
}

private void FixedUpdate()
{
    float moveHorizontal = Input.GetAxis("Horizontal");
    float moveVertical = Input.GetAxis("Vertical");
    Vector2 movement = new Vector2(moveHorizontal, moveVertical);
    Body.AddForce(movement * speed);
}

【问题讨论】:

  • 错误信息解释它,你的“玩家”对象没有刚体..只需选择它,然后添加一个刚体。
  • 什么是gameObject?您的脚本所附加的游戏对象是同一个游戏对象吗?
  • @JoeSewell 是的,团结就是这样工作的。您可以使用 gameObject 访问脚本附加到的 GameObject 类似地,使用 transform 等转换实例
  • @YamaçKurtuluş 那么Start 方法中的AddComponentGetComponent 应该引用同一个游戏对象吗?
  • 是的,通常我认为这会起作用。但是物理系统可能会导致设置其他一些东西。最好从编辑器中添加组件,尤其是刚体或网格等复杂对象。还有GameObject.Find一开始什么都不做。

标签: c# unity3d


【解决方案1】:

解决方案

如果您要为刚体添加脚本,那么您应该在项目的层次视图中的游戏对象中附加一个刚体。在项目的分层视图中单击 agmeobject。它将向您显示游戏对象的检查器视图并将刚体附加到游戏对象,错误将得到解决,它有助于我们实现刚体和物理特性的方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-02
    • 1970-01-01
    相关资源
    最近更新 更多