2016-06-03 3 views
0

Я пытаюсь заставить игрока прыгать, но я получаю сообщение об ошибке в fixedUpdate с rb.AddForce «Не могу назначить AddForce, потому что это группа методов», однако он работал до того, как я добавил скорость прыжка и функция прыжка, как я могу сделать эту работу?Как заставить игрока прыгать в единстве с помощью C#

Код:

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

public class PlayerController : MonoBehaviour { 

public float speed; //Creates Speed Variable 
public Text countText; //Creates Count Text Variable 
public Text winText; //Creates Win Text Variable 
public float JumpSpeed; 

private Rigidbody rb; //Creates Rigidbody Variable 
private int count; //Creates Count Variable 

void Start() 
{ 
    rb = GetComponent<Rigidbody>(); //sets variable for Rigidbody 
    count = 0; 
    SetCountText(); 
    winText.text = ""; 
} 

void FixedUpdate() //Controls 
{ 
    float moveHorizontal = Input.GetAxis ("Horizontal"); 
    float moveVertical = Input.GetAxis ("Vertical"); 
    float moveForward = Input.GetAxis ("Forward"); 

    Vector3 movement = new Vector3 (moveHorizontal, 0.0f, moveVertical); 

    rb.AddForce = (movement * speed); 

    if (Input.GetKeyUp (KeyCode.Space)) 
    { 
     JumpSpeed = 5.0f; 
     Vector3 jump = new Vector3 (0.0f, moveForward, 0.0f); 
    } 

} 

void OnTriggerEnter(Collider other) //Collect Items 
{ 
    if (other.gameObject.CompareTag ("Pickup")) { 
     other.gameObject.SetActive (false); 
     count = count + 1; 
     SetCountText(); 
    } 
} 

void SetCountText() //Updates Count Text 
{ 
    countText.text = "Count: " + count.ToString(); 
    if (count >= 8) 
    { 
     winText.text = "You Win!"; //Displays Win Text 
    } 
} 

} 
+0

как это отличается от rb, AddForce (движение * скорость); bleow vector3 движение? Edit: nevermind remove the = is the difference – Nirset

+0

Ну, есть дополнительный знак '='. Это не должно быть там. '=' - оператор присваивания. Вы присваиваете значение '(движение * скорость)' методу rb.AddForce, который, как я объясняю в своем ответе, не имеет смысла. Если вы хотите вызвать метод, вам нужно использовать оператор '()' и поместить параметры между ними, как показано в моем ответе. –

ответ

1

AddForce это метод, а не собственность. Необходимо вызвать методы, вы не присваиваете им значения. Попробуйте

rb.AddForce(movement * speed); 

Помимо этого, возможно, вам следует более глубоко изучить основы программирования. Вы можете отличать методы от свойств, поскольку имена методов обычно начинаются с глагола («AddForce», «CreateObject» и т. Д.), А имена свойств описывают, ну, свойства («Цвет», «Вертикальная скорость», «Имя»,. ..)

Смежные вопросы