My targeting system isn't targeting the character
I have a player targeting system where enemies fire at the player. But instead of firing at the player the missiles target the player manager and follows it to whatever side of the passage it's on.
I have made a short video to show what happens - https://youtu.be/3R7EGrbdfbk
any suggestions as to what the problem could be?
Tracker code using System.Collections; using System.Collections.Generic; using UnityEngine;
public class Tracker : MonoBehaviour{
public float speed;
public Rigidbody rb; //addition
public GameObject objectToDestroy; //addition
private Transform playerManager;
private Vector3 target;
void Start() //targeting the player
{
playerManager = GameObject.FindGameObjectWithTag("PlayerManager").transform;
target = new Vector3(playerManager.position.x, playerManager.position.y);
rb.velocity = transform.forward * speed; //addition, tells it to shoot forward
}
void Update() //movement of the missile
{
transform.position = Vector3.MoveTowards(transform.position, target, speed * Time.deltaTime); //NB: swapping "Target" with "player" the bolt will follow the play instead of the target
{
if (transform.position.x == target.x && transform.position.y == target.y)
{
DestroyBolt();
}
}
}
void OnTriggerEnter(Collider col) //killing the player
{
if (col.gameObject.tag == "Player")
{
Debug.Log("Bolt hit player: Tracker Script");
Destroy(objectToDestroy);
}
}
void DestroyBolt() //destroying the bolt
{
Destroy(gameObject); //addition
Debug.Log("Bolt deleted: Tracker Script");
}
}
Answer by I_Am_Err00r · Jul 24, 2019 at 08:33 PM
This
target = new Vector3(playerManager.position.x, playerManager.position.y);
It is doing what you are telling it to, change to:
target = new Vector3 player.transform.position;
it's not working.
1st it said: error CS1525: Unexpected symbol player', expecting
(', [', or
{' error CS1002: ; expected error CS0103: The name 'player' does not exist in the current context
error CS0201 Only assignment, call, increment, decrement, and new object expressions can be used as a statement
I changed your line to: target = new Vector3 (player.transform.position)();
And i got back: Error CS0103 The name 'player' does not exist in the current context
there are 4 potential fixes but that just switches the error to the transform with an error CS1061
i tried changing player to player $$anonymous$$anager and that switches the error to the Vector3 with an error CS1729
Been hunting for 3 hours and I'm stuck again.
Thank you for your help so far