Я пытаюсь следовать онлайн-учебнику по космическим шутерам с unity5, и у меня проблемы с жестким телом.
Я понимаю, что твердое тело было заменено на Component.GetComponent(), но я хочу создать переменную вместо того, чтобы вводить все это.
Я получаю ТОННУ ошибок, используя Component.GetComponent(), и не понимаю, что не так.
Вот мой фрагмент кода, я пытаюсь ограничить движение зажимом:
using UnityEngine;
using System.Collections;
public class PlayerController : MonoBehaviour {
public float speed;
public float xMin, zMin, xMax, zMax;
void FixedUpdate(){
float moveHorizontal = Input.GetAxis("Horizontal");
float moveVertical = Input.GetAxis("Vertical");
Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical);
Component.GetComponent<Rigidbody>().velocity = movement*speed;
Component.GetComponent<Rigidbody>().position = new Vector3
(
Mathf.Clamp(Component.GetComponent<Rigidbody>().position.x, xMin, xMax),
0.0f,
Mathf.Clamp(Component.GetComponent<Rigidbody>().position.z, zMin, zMax)
);
}
}
и вот куча ошибок, которые он мне выдает:
Finished updating scripts / assemblies
Some scripts have compilation errors which may prevent obsolete API usages to get updated. Obsolete API updating will continue automatically after these errors get fixed.
Assets/Scripts/PlayerController.cs(14,27): error CS0120: An object reference is required to access non-static member `UnityEngine.Component.GetComponent(System.Type)'
Assets/Scripts/PlayerController.cs(14,47): error CS0120: An object reference is required to access non-static member `UnityEngine.Component.GetComponent(System.Type)'
Assets/Scripts/PlayerController.cs(18,31): error CS1502: The best overloaded method match for `UnityEngine.Mathf.Clamp(float, float, float)' has some invalid arguments
Assets/Scripts/PlayerController.cs(18,31): error CS1503: Argument `#1' cannot convert `object' expression to type `float'
Assets/Scripts/PlayerController.cs(20,47): error CS0120: An object reference is required to access non-static member `UnityEngine.Component.GetComponent(System.Type)'
Assets/Scripts/PlayerController.cs(20,31): error CS1502: The best overloaded method match for `UnityEngine.Mathf.Clamp(float, float, float)' has some invalid arguments
Assets/Scripts/PlayerController.cs(20,31): error CS1503: Argument `#1' cannot convert `object' expression to type `float'
Assets/Scripts/PlayerController.cs(21,18): error CS1502: The best overloaded method match for `UnityEngine.Vector3.Vector3(float, float, float)' has some invalid arguments
Assets/Scripts/PlayerController.cs(21,18): error CS1503: Argument `#1' cannot convert `object' expression to type `float'
Assets/Scripts/PlayerController.cs(16,27): error CS0120: An object reference is required to access non-static member `UnityEngine.Component.GetComponent(System.Type)'
Я чувствую, что упускаю что-то важное и очевидное, потому что это не так много кода, чтобы оправдывать столько ошибок.