Move enemy ship down while moving left and right

so I’m new at unity and I’m starting off a simple space shooter. I made some enemy ships fly downward but I want to vary it up by making some fly downward but swaying left and right. If I can get some help on writing a script for that, it would be great. I use java for scripting. Thanks and I go to this community site to get answers on things I need help on. Great community!

How you make this happen will depend on how you are making your ships fly downward. The list can be more help if you post the code you have so far.

–

right now I have is this simple fly down. Having trouble adding to it. : public var speed = 2.0f; //Move speed function Update () { //Move enemy transform.Translate(Vector3.down * speed * Time.deltaTime); if (transform.position.y < -15) { //Destroy Destroy(gameObject); } }

–

2 Answers

2

I added to your script to make the ship sway as it descends. You can set swaySpeed and swayMagnitude in the inspector.

#pragma strict
public var speed = 2.0f;         //Move speed
public var swayMagnitude : float = 0.3f;
public var swaySpeed : float = 3.0;
 
function Update () {
   var v3T : Vector3;
   v3T.x = Mathf.Sin(Time.time * swaySpeed) * swayMagnitude;
   v3T.y = transform.position.y - speed * Time.deltaTime;
   v3T.z = 0.0;
          
   transform.position = v3T;

   if (transform.position.y < -15) {
     //Destroy
     Destroy(gameObject);
   }
}

this one seems to work good. The only issue I have is the the position seems to clamp in the x position. Meaning if I have 2 ships with that script and I move them away from each other and press play. they'll both start at the exact position. Not sure how to fix that. Thanks a bunch

–

Give the two ships different swaySpeeds, or create an offset to added to Time.time, or detect when the Mathf.Sin() goes to/from negative/positive and recalc swaySpeed and/or swayMagnitude for a more random look.

–

ok. I'll give it a try. Thanks

–

not tested but you can give it a try

var speed : float = 2.0f ;

function Update (){

transform.Translate(Vector3.down * speed  * Time.deltaTime);

if(transform.position.y =< -10){
transform.Translate(speed * Time.deltaTime , -1 * speed * Time.deltaTime, 0);
}
}