- Home /
Simplifying a script
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class FlyingEnemy : MonoBehaviour
{
private float amplitudeZ = 5.0f;
private float amplitudeY = 3.0f;
private float omegaZ = 2.0f;
private float omegaY = 2.0f;
public EnemySpawn eSpawn;
public int place;
private float timeI;
private float mTime0;
private float mTime1;
private float mTime2;
private float mTime3;
private float mTime4;
//keeps current position of objects
public List<Vector3> posList = new List<Vector3>();
void setVars()
{
posList.Add (eSpawn.eSnake [0].transform.position);
posList.Add (eSpawn.eSnake [1].transform.position);
posList.Add (eSpawn.eSnake [2].transform.position);
posList.Add (eSpawn.eSnake [3].transform.position);
posList.Add (eSpawn.eSnake [4].transform.position);
}
public void Snaker()
{
float y0;
float y1;
float y2;
float y3;
float y4;
Vector3 v0 = posList [0];
Vector3 v1 = posList [1];
Vector3 v2 = posList [2];
Vector3 v3 = posList [3];
Vector3 v4 = posList [4];
Vector3 leader0 = eSpawn.eSnake [0].transform.position;
Vector3 leader1 = eSpawn.eSnake [1].transform.position;
Vector3 leader2 = eSpawn.eSnake [2].transform.position;
Vector3 leader3 = eSpawn.eSnake [3].transform.position;
Vector3 toLeader0 = leader0 - transform.position;
Vector3 toLeader1 = leader1 - transform.position;
Vector3 toLeader2 = leader2 - transform.position;
Vector3 toLeader3 = leader3 - transform.position;
//
// Quaternion wantDir0 = Quaternion.LookRotation(toLeader0);
// Quaternion wantDir1 = Quaternion.LookRotation(toLeader1);
// Quaternion wantDir2 = Quaternion.LookRotation(toLeader2);
// Quaternion wantDir3 = Quaternion.LookRotation(toLeader3);
timeI += Time.deltaTime;
mTime0 += Time.deltaTime;
if (mTime0 > 0.1f)mTime1 += Time.deltaTime;
if (mTime1 > 0.1f)mTime2 += Time.deltaTime;
if (mTime2 > 0.1f)mTime3 += Time.deltaTime;
if (mTime3 > 0.1f)mTime4 += Time.deltaTime;
float z = (omegaZ * amplitudeZ);
y0 = Mathf.Abs (amplitudeY * Mathf.Sin (omegaY * mTime0));
y1 = Mathf.Abs (amplitudeY * Mathf.Sin (omegaY * mTime1));
y2 = Mathf.Abs (amplitudeY * Mathf.Sin (omegaY * mTime2));
y3 = Mathf.Abs (amplitudeY * Mathf.Sin (omegaY * mTime3));
y4 = Mathf.Abs (amplitudeY * Mathf.Sin (omegaY * mTime4));
eSpawn.eSnake [0].transform.position = new Vector3 (0.0f, v0.y + y0, v0.z -z * timeI);
eSpawn.eSnake [1].transform.position = new Vector3 (0.0f, v1.y + y1, v1.z -z * timeI);
// eSpawn.eSnake [1].transform.rotation = Quaternion.RotateTowards(transform.rotation, wantDir0, 360*Time.deltaTime);
eSpawn.eSnake [2].transform.position = new Vector3 (0.0f, v2.y + y2, v2.z -z * timeI);
// eSpawn.eSnake [2].transform.rotation = Quaternion.RotateTowards(transform.rotation, wantDir1, 360*Time.deltaTime);
eSpawn.eSnake [3].transform.position = new Vector3 (0.0f, v3.y + y3, v3.z -z * timeI);
// eSpawn.eSnake [3].transform.rotation = Quaternion.RotateTowards(transform.rotation, wantDir2, 360*Time.deltaTime);
eSpawn.eSnake [4].transform.position = new Vector3 (0.0f, v4.y + y4, v4.z -z * timeI);
// eSpawn.eSnake [4].transform.rotation = Quaternion.RotateTowards(transform.rotation, wantDir3, 360*Time.deltaTime);
}
// Update is called once per frame
void Update ()
{
Invoke ("setVars", 0.5f);
Invoke ("Snaker", 1.0f);
}
}
That problem with this is the rotation part. Which is why it's commented out. If it isn't it causes huge amounts of lag.
So I was wondering if I could get some help altering this script so that I can get the rotation in there without causing my computer to explode.
I doubt you want new invokes made as often as Update is called!
Answer by Reimus · Jan 20, 2015 at 02:00 AM
instead of Invoke in Update() do InvokeRepeating(functionname, interval, interval) in a start function.
public void InvokeRepeating(string methodName, float time, float repeatRate);
void Start () {
InvokeRepeating("setVars", 0.5f, 0.5f);
InvokeRepeating("Snaker", 1.0f, 1.0f);
}
Your answer

Follow this Question
Related Questions
Rotating Character 1 Answer
Rotate an object such that it is theta degrees relative to another object 1 Answer
Top down space game Rotation help. 0 Answers
Making RigidBody face direction for movement 1 Answer
Random insect movement 1 Answer