- Home /
Question by
hackeveryone · Oct 06, 2014 at 11:16 AM ·
errorbuild
NullReferenceException: Object reference not set to an instance of an object FPSAndroid.Update ()
hello , I was following a tutorial and I was having a few error and some how managed to fix them but now when I run the script I am getting
"NullReferenceException: Object reference not set to an instance of an object FPS_Android.Update () (at Assets/Scripts/FPS_Android.js:53) "
here is my script code :-
@script RequireComponent(CharacterController)
var moveTouchPad : Joystick;
var rotateTouchPad : Joystick;
var cameraPivot : Transform;//cam rotate//
//Moving the Player on moving the Touch Pad//
var forwardSpeed : float = 4;
var backwardSpeed : float = 1;
var sidestepSpeed : float = 1;
var jumpSpeed : float = 8;
var inAirMultiplier : float = 0.25; // Reduces Speed of running when u jump and run,used to make it look more Realistic //
var rotationSpeed : Vector2 = Vector2( 50, 25 );
var tiltPositiveYAxis : float = 0.6;
var tiltNegativeYAxis : float = 0.4;
var tiltXAxisMinimum : float = 0.1;
private var thisTransform : Transform;
private var character : CharacterController;
private var cameraVelocity : Vector3;
private var velocity : Vector3;
private var canJump = true;
function Start () {
//THIS WILL DEFINE THE COMPONENTS TO SPEED UP LOADING TIME IN THE GAME //
thisTransform = GetComponent(Transform);
character = GetComponent(CharacterController);
//MOVE THE CHARACTER TO THE SPAWN LOCATION IF IT EXISTS//
var spawn = GameObject.Find("PlayerSpawn");
if(spawn){
thisTransform.position = spawn.transform.position;
}
}
function OnEndGame(){
moveTouchPad.Disable();
if(rotateTouchPad){
rotateTouchPad.Disable();
}
this.enabled = false;
}
function Update () {
var movement = thisTransform.TransformDirection(Vector3(moveTouchPad.position.x, 0 , moveTouchPad.position.y));
movement.y = 0;
movement.Normalize();
var absJoyPos = Vector2(Mathf.Abs(moveTouchPad.position.x),Mathf.Abs(moveTouchPad.position.y));
if(absJoyPos.y > absJoyPos.x){
if(moveTouchPad.position.y > 0){
movement *= forwardSpeed * absJoyPos.y;
}
else{
movement *= backwardSpeed * absJoyPos.y;
}
}
else{
movement *= sidestepSpeed * absJoyPos.y;
}
if(character.isGrounded){
var Jump = false;
var touchPad : Joystick;
if(rotateTouchPad){
touchPad = rotateTouchPad;
}
else{
touchPad = moveTouchPad;
}
if(!touchPad.IsFingerDown()){
canJump = true;
}
if( canJump && touchPad.tapCount >= 2){
velocity = character.velocity;
velocity.y = jumpSpeed;
}
else{
velocity.y += Physics.gravity.y * Time.deltaTime;
movement.x *= inAirMultiplier;
movement.z *= inAirMultiplier;
}
movement += velocity;
movement += Physics.gravity;
movement *= Time.deltaTime;
character.Move(movement);
if(character.isGrounded){
var camRotation = Vector2.zero;
if(rotateTouchPad){
camRotation = rotateTouchPad.position;
}
else{
print(iPhoneInput.acceleration);
var acceleration = Input.acceleration;
var absTiltX = Mathf.Abs(acceleration.x);
if(acceleration.z < 0 && acceleration.x <0){
if(absTiltX >= tiltPositiveYAxis){
camRotation.y = (absTiltX - tiltPositiveYAxis) / (1 - tiltPositiveYAxis);
}
else if(absTiltX <= tiltNegativeYAxis){
camRotation.y = -(tiltNegativeYAxis - absTiltX) / tiltNegativeYAxis;
}
}
if(Mathf.Abs(acceleration.y) >= tiltXAxisMinimum){
camRotation.y = -(acceleration.y - tiltXAxisMinimum) / (1 - tiltXAxisMinimum);
}
camRotation.x *= rotationSpeed.x;
camRotation.y *= rotationSpeed.y;
camRotation *= Time.deltaTime;
thisTransform.Rotate(0, camRotation.x,0,Space.World);
cameraPivot.Rotate (-camRotation.y , 0 , 0);
}
}
}
}
Thanks!
Comment
Answer by Seneral · Oct 06, 2014 at 12:46 PM
This is a really simple error and you probably could have solved it yourself:) This means a variable you used isn't defined correctly, so I would look in line 53... only 2 variables! thisTransform... you don't need to declare it, just type Transform instead and he will read the transform of the object the script is attached to.