C#Unity:无法将方法组“ GetComponent”转换为非委托类型“ Rigidbody2D”

时间:2018-10-20 22:52:57

标签: unity3d

我是C#/ C ++的新手(很抱歉,如果代码中的错误很明显。)

我正在使用this tutorial(标记为1:27:47),并且遇到了错误。我试图通过在网上寻找其他有类似问题的人的解决方案来修复此代码。当我第一次获得此代码时,错误是:

UnityEngine.Component' does not contain a definition for 'velocity' and no extension method 'velocity' of type 'UnityEngine.Component' could be found. Are you missing an assembly reference?'

应用一些修复程序后,现在的代码如下所示:

using UnityEngine;
using System.Collections;
using UnityEngine.UI;

//This scrits makes the character move when the screen is pressed and 
handles the jump
public class CharacterFinal : MonoBehaviour
{
public bool jump = false;               // Condition for whether the player should jump.    
public float jumpForce = 10.0f;         // Amount of force added when the player jumps.
private bool grounded = false;          // Whether or not the player is grounded.
public int movementSpeed = 10;          // The vertical speed of the movement
private Animator anim;                  // The animator that controls the characters animations
//Declare rigid2D
Rigidbody2D rigid2D;
// Use this for initialization

void Awake()
{
    anim = GetComponent<Animator>();

    //Initialize rigid2D
    rigid2D = GetComponent<Rigidbody2D>;
}


//This method is called when the character collides with a collider (could be a platform).
void OnCollisionEnter2D(Collision2D hit)
{
    grounded = true;
    print ("isground");
}

//The update method is called many times per seconds
void Update()
{
    if(Input.GetButtonDown("Fire1"))
    {       
        // If the jump button is pressed and the player is grounded and the character is running forward then the player should jump.
        if(grounded == true)                        
        {
            jump = true;
            grounded = false;
            //We trigger the Jump animation state
            anim.SetTrigger("Jump");
        }

    }

}




//Since we are using physics for movement, we use the FixedUpdate method
void FixedUpdate ()
{

    //if died that 
    rigid2D.velocity = new Vector2(movementSpeed, rigid2D.velocity.y );
    //else
    //moving


    // If jump is set to true we add a quick force impulse for the jump
    if(jump == true)
    {
        // Add a vertical force to the player.
        rigid2D.AddForce(new Vector2(0f, jumpForce),ForceMode2D.Impulse);

        // We set the variable to false again to avoid adding force constantly
        jump = false;
    }
}

}

它给出的错误是这个

Cannot convert method group 'GetComponent' to non-delegate type 
UnityEngine.Rigidbody2D'.

错误在第22行

rigid2D = GetComponent<Rigidbody2D>;

1 个答案:

答案 0 :(得分:2)

只需更改

rigid2D = GetComponent<Rigidbody2D>;

rigid2D = GetComponent<Rigidbody2D>();