- Home /
CS0176: An error I can't move past with rigidbody raycasting
So I've just begun work with raycasting and was ecstatic when I finally got my first Raycast up and running. However in modifying it I have hit a snag. Unity keeps popping this wonderful phrase up and google has yielded no results that were helpful. Here is the error:
Assets/PlayerAttack.cs(18,95): error CS0176: Static member `UnityEngine.Vector3.forward' cannot be accessed with an instance reference, qualify it with a type name instead
Here is my code:
using UnityEngine;
using System.Collections;
public class PlayerAttack : MonoBehaviour {
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
RaycastHit hit;
Vector3 fwd = transform.TransformDirection(Vector3.forward);
if(Input.GetKeyDown(KeyCode.E)){
if(Physics.Raycast(Camera.main.transform.position, fwd, out hit, 10)){
if(hit.collider.tag == "Palmtree"){
hit.rigidbody.AddForce(Camera.main.transform.position.forward);
}
}
}
}
}
Anyone have any idea?
I guess there is no Camera.main.transform.position.forward; this looks a bit odd can you confirm what you want to happen when the player presses E and the raycast hits the palmtree - what do you want to move?
Answer by vexe · Sep 16, 2013 at 03:50 AM
The forward vector inside the Vector3
class is static, you access it like Vector3.forward
, like you did correctly.
But then you wrote:
hit.rigidbody.AddForce(Camera.main.transform.position.forward);
position
is Vector3 instance, right? and you're trying to access the static member forward
from it, that's why it's barking that error.
Use either Vector3.forward
, unless you meant Camera.main.transform.forward
Crap, all because I left position in. Thanks man, you're a life saver.