i want my enemy to be move like this in this picture. How can i achieve this in unity 2d.
CodePudding user response:
There are numerous ways to achieve that. A good starting point is a state machine.
- You have a state which decides in which direction you are currently moving.
- After a certain time (or condition is met) you change the state.
sample code:
{
private int state = 1; // 1 means moving down and right, 2 means moving up.
// you could also use an enum for this.
private float time = 0; // how long the enemy is already moving in this direction
void Update() {
if (state == 1) {
// move down right
transform.position = transform.position new Vector(1,-1,0) * Time.deltaTime;
} else if (state == 2) {
// move up
// TODO
}
// Add additional states here...
time = Time.deltaTime; // track how long you are in this state
// Change the condition here...
if (time > TIME_MOVING_IN_SAME_DIRECTION) {
time = 0; // reset time
// set next state:
if (state == 1) state = 2;
else if (state == 2) state = 1;
// Add additional changes between the states here if necessary
}
}
}