Hi there,
Below is my code I’m using to move an object (enemy in this case) back and forth. However I’m struggling to figure out my logic (in the fixed update function) to try and flip the sprite once it moves back and forth.
using UnityEngine;
using System.Collections;
public class EnemyAI : MonoBehaviour {
[SerializeField] float amplitude = 1.0f;
[SerializeField] float speed = 1.0f;
[SerializeField] Axis axis = Axis.XAxis;
Vector3 origin = Vector3.zero;
float t = 0.0f;
private bool facingRight = true;
Transform enemyGraphics;
Vector3 position;
void Start() {
enemyGraphics = transform.FindChild ("Graphics");
if (enemyGraphics == null) {
Debug.LogError("There is no 'Graphics' object as a child of the Enemy!");
}
this.origin = this.transform.position;
}
void Update() {
t = Time.realtimeSinceStartup;
position = this.transform.position;
switch(this.axis) {
case Axis.XAxis: {
position.x = this.amplitude * Mathf.Sin(Time.realtimeSinceStartup * this.speed) + this.origin.x;
this.transform.position = position;
} break;
case Axis.YAxis: {
position.y = this.amplitude * Mathf.Sin(Time.realtimeSinceStartup * this.speed) + this.origin.y;
this.transform.position = position;
} break;
case Axis.ZAxis: {
position.z = this.amplitude * Mathf.Sin(Time.realtimeSinceStartup * this.speed) + this.origin.z;
this.transform.position = position;
}break;
}
}
void FixedUpdate () {
//Checking to see what direction our enemy is going so and to see what way we need to flip it
// If the input is moving the enemy right and the enemy is facing left...
if (this.origin.x > this.origin.x && !facingRight)
// ... flip the enemy.
Flip();
// Otherwise if the input is moving the enemy left and the enemy is facing right...
else if (this.origin.x < this.origin.x && facingRight)
// ... flip the enemy.
Flip();
}
private void Flip()
{
// Switch the way the enemy is labelled as facing.
facingRight = !facingRight;
//Multiply the enemy's x local scale by -1.
Vector3 theScale = enemyGraphics.localScale;
theScale.x *= -1;
enemyGraphics.localScale = theScale;
}
}
public enum Axis {
XAxis,
YAxis,
ZAxis
}
Thanks for your help in advance.