I’m having trouble figuring this out. I’m trying to slow the speed of an object depending on another script [the score]. Problem is that performance is really bad, and doing a Coroutine isn’t very practical since checking the score every X amount of time - might actually not work all the time… I.E. What’s the chance of hitting the score on the 5th second that the Coroutine is ran?
Here is my script:
public class MovePlank : MonoBehaviour
{
public float plankMover = -2.0f;
ScoreTracker checkScore;
public float amplitudeX = 10.0f;
public float amplitudeY = 5.0f;
public float omegaX = 1.0f;
public float omegaY = 5.0f;
float index;
float checkScoreTime = 5.0f;
bool checkLevelOne = false;
// Use this for initialization
void Start ()
{
checkScore = GetComponent<ScoreTracker>();
}
// Update is called once per frame
void Update ()
{
StartCoroutine(WaitToCheckScore(checkScoreTime));
transform.Translate(plankMover * Time.deltaTime, 0f, 0f);
if (checkLevelOne)
{
/* index += Time.deltaTime / plankMover; //this changes the X speed as it technically slows down time. Increase paintSpeed to slow it down further.
float x = amplitudeX * Mathf.Cos(omegaX * index); //amplitude X is the X value as where it'll generate while omegaX shouldn't really be touched.
float y = amplitudeY * Mathf.Sin(omegaY * index); // amplitude Y is the Y value as where it'll generate and omegaY is how many times it goes up and down.
transform.localPosition = new Vector3(x, y, 0); */
transform.Translate(plankMover / 2 * Time.deltaTime, 0f, 0f);
}
}
IEnumerator WaitToCheckScore (float checkScoreTime)
{
yield return new WaitForSeconds(checkScoreTime);
if (checkScore.levelOne)
{
checkLevelOne = true;
}
}
}
Suggestions?