- Home /
Error when player get's shot
Hey guys, I made so that my Enemy can shoot me, but when I'm destroyed, this error appears: The object of type "Transform" has been destroyed but you are still trying to access it. The error is in the camera script. Does someone know how I can fix this?
The camera script:
using System.Collections; using System.Collections.Generic; using UnityEngine;
public class CameraMotor : MonoBehaviour { public Transform LookAt;
public float boundX = 0.5f; public float boundY = 0.5f; public float boundZ = 0.5f; public float speed = 0.15f;
private Vector3 desiredPosition;
// Update is called once per frame
void LateUpdate()
{
Vector3 delta = Vector3.zero;
float dx = LookAt.position.x - transform.position.x;
// X Axis
if (dx > boundX || dx < -boundX)
{
if (transform.position.x < LookAt.position.x)
{
delta.x = dx - boundX;
}
else
{
delta.x = dx + boundX;
}
}
float dy = LookAt.position.y - transform.position.y;
// Y Axis
if (dy > boundX || dy < -boundY)
{
if (transform.position.y < LookAt.position.y)
{
delta.y = dy - boundY;
}
else
{
delta.y = dy + boundY;
}
}
float dz = LookAt.position.z - transform.position.z;
// Z Axis
if (dz > boundZ || dz < -boundZ)
{
if (transform.position.z < LookAt.position.z)
{
delta.z = dz - boundZ;
}
else
{
delta.z = dz + boundZ;
}
}
// Move the camera
desiredPosition = transform.position + delta;
transform.position = Vector3.Lerp (transform.position, desiredPosition, speed);
}
}
Answer by joni171116 · Mar 26 at 11:58 AM
This error occurs, because on your Movement Script you are probably still trying to accsess the destroyed Player.
Example:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Movement: MonoBehaviour
{
//movement logic
Vector3.move(player)
}
you can fix this by checking if the Player is still "alive":
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Movement: MonoBehaviour
{
if(player)
{
//movement
Vector3.move(player)
}
else
{
//do nothing
}
}