The question is answered, right answer was accepted
Invalid token 'in' class, struct, or interface member declaration Problem
Hello I am having a problem since changing an old command (Rigidbody.rigidbody) for a new updated one( UnityEngine.Component.Rigidbody.rigidbody;) I am getting these Invaild Token Errors The script looks OK except for this one error I can't solve can someone please help?
using UnityEngine;
using System.Collections;
[RequireComponent (typeof (GravityBody))]
public class FirstPersonHoverTank : MonoBehaviour {
// public vars
public float mouseSensitivityX = 250;
public float mouseSensitivityY = 250;
public float hoverSpeed = 20;
public float jumpForce = 1000f;
public float hoverForce = 65f;
public float hoverHeight = 3.5f;
public LayerMask groundedMask;
// System vars
bool grounded;
Vector3 moveAmount;
Vector3 smoothMoveVelocity;
float verticalLookRotation;
Transform cameraTransform;
UnityEngine.Component.Rigidbody.rigidbody;
void Awake() {
Screen.lockCursor = true;
cameraTransform = Camera.main.transform;
rigidbody = GetComponent<Rigidbody> ();
}
void Update() {
// Look rotation:
transform.Rotate(Vector3.up * Input.GetAxis("Mouse X") * mouseSensitivityX * Time.deltaTime);
verticalLookRotation += Input.GetAxis("Mouse Y") * mouseSensitivityY * Time.deltaTime;
verticalLookRotation = Mathf.Clamp(verticalLookRotation,-60,60);
cameraTransform.localEulerAngles = Vector3.left * verticalLookRotation;
// Calculate movement:
float inputX = Input.GetAxisRaw("Horizontal");
float inputY = Input.GetAxisRaw("Vertical");
Vector3 moveDir = new Vector3(inputX,0, inputY).normalized;
Vector3 targetMoveAmount = moveDir * walkSpeed;
moveAmount = Vector3.SmoothDamp(moveAmount,targetMoveAmount,ref smoothMoveVelocity,.15f);
// Jump
if (Input.GetButtonDown("Jump")) {
if (grounded) {
rigidbody.AddForce(transform.up * jumpForce);
}
}
// Grounded check
Ray ray = new Ray(transform.position, -transform.up);
RaycastHit hit;
if (Physics.Raycast(ray, out hit, 1 + .1f, groundedMask)) {
grounded = true;
}
else {
grounded = false;
}
}
void FixedUpdate() {
// Apply movement to rigidbody
Vector3 localMove = transform.TransformDirection(moveAmount) * Time.fixedDeltaTime;
rigidbody.MovePosition(rigidbody.position + localMove);
}
}
Oh O$$anonymous$$ thank you very much EmHuynh though getting a the type 'Ridgidbody' does not exist in the type 'UnityEngine.Component' error what am I doing wrong now?
@Vampyr_Engel, I am sorry for the delay of my response. Can you please provide the changes you made? Thanks!
O$$anonymous$$ using UnityEngine; using System.Collections;
[RequireComponent (typeof (GravityBody))]
public class FirstPersonHoverTank : $$anonymous$$onoBehaviour {
// public vars
public float mouseSensitivityX = 250;
public float mouseSensitivityY = 250;
public float hoverSpeed = 20;
public float jumpForce = 1000f;
public float hoverForce = 65f;
public float hoverHeight = 3.5f;
public Layer$$anonymous$$ask grounded$$anonymous$$ask;
// System vars
bool grounded;
Vector3 moveAmount;
Vector3 smooth$$anonymous$$oveVelocity;
float verticalLookRotation;
Transform cameraTransform;
UnityEngine.Component.Rigidbody rigidbody;
void Awake() {
Screen.lockCursor = true;
cameraTransform = Camera.main.transform;
rigidbody = GetComponent<Rigidbody> ();
}
void Update() {
// Look rotation:
transform.Rotate(Vector3.up * Input.GetAxis("$$anonymous$$ouse X") * mouseSensitivityX * Time.deltaTime);
verticalLookRotation += Input.GetAxis("$$anonymous$$ouse Y") * mouseSensitivityY * Time.deltaTime;
verticalLookRotation = $$anonymous$$athf.Clamp(verticalLookRotation,-60,60);
cameraTransform.localEulerAngles = Vector3.left * verticalLookRotation;
// Calculate movement:
float inputX = Input.GetAxisRaw("Horizontal");
float inputY = Input.GetAxisRaw("Vertical");
Vector3 moveDir = new Vector3(inputX,0, inputY).normalized;
Vector3 target$$anonymous$$oveAmount = moveDir * walkSpeed;
moveAmount = Vector3.SmoothDamp(moveAmount,target$$anonymous$$oveAmount,ref smooth$$anonymous$$oveVelocity,.15f);
// Jump
if (Input.GetButtonDown("Jump")) {
if (grounded) {
rigidbody.AddForce(transform.up * jumpForce);
}
}
// Grounded check
Ray ray = new Ray(transform.position, -transform.up);
RaycastHit hit;
if (Physics.Raycast(ray, out hit, 1 + .1f, grounded$$anonymous$$ask)) {
grounded = true;
}
else {
grounded = false;
}
}
void FixedUpdate() {
// Apply movement to rigidbody
Vector3 local$$anonymous$$ove = transform.TransformDirection(moveAmount) * Time.fixedDeltaTime;
rigidbody.$$anonymous$$ovePosition(rigidbody.position + local$$anonymous$$ove);
}
}
Answer by EmHuynh · Feb 27, 2016 at 09:23 PM
Hello, @Vampyr_Engel.
This line in the script: UnityEngine.Component.Rigidbody.rigidbody;
does not declare a variable with of type, Rigidbody.
I think you intended to type: UnityEngine.Component.Rigidbody rigidbody;
. There is a space between UnityEngine.Component.Rigidbody
and rigidbody
instead of a dot. Either way, it is invalid, this is how we declare a Rigidbody variable:
// System vars
bool grounded;
Vector3 moveAmount;
Vector3 smoothMoveVelocity;
float verticalLookRotation;
Transform cameraTransform;
Rigidbody rigidbody; // Valid.