- Home /
Question by
Adelphia · Apr 08, 2013 at 09:44 PM ·
raycastobjectcharacternullreferenceexception
NullReferenceException help
i keep getting one of these it appears every frame i am trying to rotate my character using raycast to detect the angle of the ground and rotate the character like a skateboarder going up a half pipe. it seems to ba problem with the ray variable i think. here is my code:
var rotateSpeed = 90;
var pushingImpulse = 3.5;
var maxSpeed = 12;
var decayRate = 0.1;
var targetDir:Vector3;
var ray:Ray;
var hit:RaycastHit;
private var character : CharacterController;
private var trans : Transform;
private var speed = 0.0;
function Start ()
{
character = GetComponent(CharacterController);
trans = transform;
}
function Push()
{
speed += pushingImpulse;
speed = Mathf.Min(speed, maxSpeed);
}
function Update ()
{
var horizontal = Input.GetAxis("Horizontal");
trans.Rotate(0, rotateSpeed * horizontal * Time.deltaTime, 0);
if (character.isGrounded && Input.GetKey(KeyCode.UpArrow))
Push();
var moveDirection = trans.forward * speed;
moveDirection += Physics.gravity;
character.Move(moveDirection * Time.deltaTime);
//Cast the ray relative to player
ray = Ray(trans.position + trans.up, trans.down);
//If we are on the ground and we get a raycasthit
if (Physics.Raycast(ray, hit, 100)) {
if (character.isGrounded) {
targetDir = hit.normal;
Debug.DrawLine (transform.position, hit.point, Color.cyan);
}
}
//Smoothly move towards the new direction
transform.up = Vector3.Slerp(transform.up, targetDir, 5 * Time.deltaTime);
if (character.isGrounded)
{
speed -= decayRate * Time.deltaTime * speed;
}
}
i cannot see the raycast with the debug on as well so definitely something wrong there.
also should i be using the character controller here or a rigidbody?
Many thanks
Comment
forgot to say the null refrence error appears on the line:
ray = Ray(trans.position + trans.up, trans.down);
I don't think you're using the raycast properly. Here's the documentation for it:
http://docs.unity3d.com/Documentation/ScriptReference/Physics.Raycast.html