- Home /
Assign a 'Transform' target to prefab by finding a 'GameObject'
I've read through other posts, and I know what needs to be done, I just can't find a way to do it. I'm pretty new to unity and game programming in general.
I have a 'Transform' object that is being used to calculate prefabbed enemy's angle of rotation and direction of travel. I can't seem to find a way to assign the target through scripting.
enter code using UnityEngine;
using System.Collections;
public class seekTarget : MonoBehaviour {
public Transform target;
public float speed;
public float moveSpeed;
public float moveStep;
public float range;
public float distance;
void Update() {
Vector3 dir = target.position - transform.position;
float angle = Mathf.Atan2(dir.y,dir.x) * Mathf.Rad2Deg;
transform.rotation = Quaternion.AngleAxis(angle, Vector3.forward);
float moveStep = moveSpeed * Time.deltaTime;
distance = Vector3.Distance (target.position, transform.position);
if (distance > range)
{
transform.position = Vector3.MoveTowards (transform.position, target.position, moveStep);
}
}
}
I've tried using the GameObject.FindGameObjectByTag("Player");
line, but when I try that it says I can't convert from 'Transform' to 'GameObject'
When I try to make the 'target' a 'GameObject' from the start, none of my vector functions will work.
I've tried explicitly typecasting as well, to no avail.
What am I missing?
Answer by robertbu · Feb 14, 2014 at 03:29 PM
If you are absolutely sure that at least one of the 'Player' tagged objects exist in the scene, you can do:
target = GameObject.FindGameObjectByTag("Player").transform;
Getting something by tag is efficient enough to do every frame, but if the 'Player' tagged object never changes to a new game object it would best to do the assignment in Start().
If there is a chance that the 'Player' game object will not exist, you can do:
GameObject go = GameObject.FindGameObjectByTag("Player");
if (go != null) {
target = go.transform;
}
else {
target = null;
}
But if you need to handle this situation, you also need to handle target being null in the rest of your code.
Of course, I was missing something as simple as '.transform' .. Thank you, kind stranger!
Your answer
Follow this Question
Related Questions
Creating an array of prefabs? 4 Answers
How to order newly created Objects? 1 Answer
Find Transform in the scene 2 Answers
prefab query 1 Answer
How to delay a line of code. 2 Answers