【问题标题】:Unity Android:RigidbodyUnity Android:刚体
【发布时间】:2012-08-16 06:26:15
【问题描述】:

我正在使用 Unity 3d 中的一个 android 项目。 我会在立方体的表面滚动球体。 但是,当我单击播放按钮时,它会返回错误消息:

Assets/Scripts/Player.js(4,1): BCE0005: Unknown identifier: 'rigidBody'.

我的代码:

function Start () {
  rigidBody.velocity.x=15;
 }

刚体组件已添加到球体中。 我想为产生的错误寻求解决方案。

【问题讨论】:

    标签: unity3d rigid-bodies


    【解决方案1】:

    我不知道你是否在刚体上设置了一个 GetComponent 变量,但你可能需要去掉它。

    例如:

    rigidBody.velocity.x=15;
    

    应该是:

    rigidbody.velocity.x=15;
    

    希望对您有所帮助。

    【讨论】:

      【解决方案2】:
      1. 首先,它是“刚体”而不是“刚体”
      2. 其次,从 Unity 5 开始 + 你不能使用“刚体”的东西 不再,所以你必须使用 GetComponent

      恢复,要按原样使用“rigidBody”,你必须先初始化它,就像其他人已经回答你的那样:

      //link you rigidbody here:
      public Rigidbody rigidBody; 
      
       function Start() {
        //Or if the script is on the GameObject that has the rigidbody component:
        //rigidBody = GetComponent<Rigidbody>();
          rigidBody.velocity=new Vector2(15,0);
      }
      

      【讨论】:

        【解决方案3】:

        我想你忘了初始化刚体。你也不能像这样分配速度,因为rigidBody.velocity.x 是一个只读值。这段代码可能会对你有所帮助:

        public Rigidbody rigidBody;
        
        function Start(){
            rigidBody.velocity=new Vector2(15,0);
        }
        

        【讨论】:

          【解决方案4】:

          您尚未初始化变量“rigidBody”。 我不认为这是你的目标。 如果您将脚本作为组件添加到球体中,则不必使用 getComponent。相反,它只是:

          "刚体.velocity.x=15;"

          您可能必须使用“new Vector3(x,y,z);”传递新的速度。在这种情况下,代码将如下所示:

          Rigidbody.velocity = new Vector3(15,Rigidbody.velocity.y, Rigidbody.velocity.z)*

          • 我现在在 2D 中工作,所以我的 Vector3 参数可能已关闭。
          • 我认为 Rigedbody 是正确的,但它可能是刚体 - 见上文。

          无论如何,不​​要忘记您的对撞机。脊状物体不会自动与其他物体碰撞,但它们会受到重力的影响。一旦我最终弄清楚了这一点,我就高兴地把我的角色扔到了 20 英尺的人行道上。如果您不那么挑剔,那么渲染血液非常容易。

          【讨论】:

            【解决方案5】:

            您需要先在检查器中添加刚体组件:

            Rigidbody sphereRigidbody;
            function Awake(){
            sphereRigidbody = GetComponent<Rigidbody>();
            sphereRigidbody.velocity = new  Vector3(15,0,0);
            }
            

            【讨论】:

              【解决方案6】:

              对于 c#

              你可能想先缓存它。

                  private Rigidbody rigidbodyCached;
              
                  //cache
                  void Start(){
                  rigidbodyCached = this.GetComponent<Rigidbody>();
                  }
              
                  //for velocity movements use FixedUpdate instead of Update
                  void FixedUpdate(){
                  rigidbodyCached.velocity = new Vector3(15,0,0);
                  }
              

              【讨论】:

                【解决方案7】:

                如果您使用的 unity 小于 5(我猜),您可以使用游戏对象的组件,如刚体或音频源,但在 unity 5 及更高版本中,您需要在唤醒或启动功能中添加对它的引用这段代码

                private Rigidbody rb;
                
                void Start() {
                     rb = GetComponent<Rigidbody>();
                     // AND AFTER YOU ADDED THE REFERENCE FOR RIGIDBODY 
                     // THEN CHANGE THE VELOCITY LIKE THIS
                     rb.velocity.x = 20; 
                
                }
                

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 2016-11-28
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多