- Home /
2 in 1 question - Enemy transforms and Frames per second
Question 1 : I have a simple AI Script that makes an enemy move towards a player . The player is defined as a transform variable in the script
v
ar Distance;
var Target : Transform;
var lookAtDistance = 25.0;
var attackRange = 15.0;
var moveSpeed = 5.0;
var Damping = 6.0;
function Update ()
{
Distance = Vector3.Distance(Target.position, transform.position);
if (Distance < lookAtDistance)
{
renderer.material.color = Color.yellow;
lookAt();
}
if (Distance > lookAtDistance)
{
renderer.material.color = Color.green;
}
if (Distance < attackRange)
{
renderer.material.color = Color.red;
attack ();
}
}
function lookAt ()
{
var rotation = Quaternion.LookRotation(Target.position - transform.position);
transform.rotation = Quaternion.Slerp(transform.rotation, rotation, Time.deltaTime * Damping);
}
function attack ()
{
transform.Translate(Vector3.forward * moveSpeed * Time.deltaTime);
}
When I go to select the transform it only lets me pick transforms from my assets . I saved the player transform as a prefab but it still doesn't let me choose the player . How can I change it so it lets me pick from the Transforms in the actual scene .
QUESTION 2 : I only have a couple of objects in the hierarchy mostly meshes (All togwether 70-100 objects). When I play my game it gets speeds of 26 fps but then after Enemies spawn it goes down to speeds of anything from 2fps to 11 fps . How can I stop this from happening
A prefab is actually a game object. But why not use the gameobject and call its transform as gameObject.transform? And you are using update function unnecessarily. Ins$$anonymous$$d of checking the distance on every frame, just use a sphere collider and OnTriggerEnter & OnTriggerExit
your 1st question is closely answered by the comment above, as for your Enemy spawn FPS drop, are you using raycasting on all the spawns? for navigating purposes?
Drag and drop the transform you want into the inspector field - it's not restricted to the project.
You can check your game profiler to see what consumes the most amount of CPU or GPU resources, here the script or the object being the culprit, is what you need to find. If you have a pro license its easier but if not, you can still find what type of call causes a huge spike, let me know this info, and maybe I can solve the problem from there. A generic solution for you right now can confuse you further as I don't know how well-versed are you with Unity's optimization methods.