- Home /
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; //$$anonymous$$ove speed
function Update ()
{
//$$anonymous$$ove enemy
transform.Translate(Vector3.down * speed * Time.deltaTime);
if (transform.position.y < -15)
{
//Destroy
Destroy(gameObject);
}
}
Answer by robertbu · Jan 29, 2013 at 07:14 AM
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. $$anonymous$$eaning 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 $$anonymous$$athf.Sin() goes to/from negative/positive and recalc swaySpeed and/or sway$$anonymous$$agnitude for a more random look.
Answer by IADev · Jan 29, 2013 at 07:28 AM
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);
}
}
Your answer
Follow this Question
Related Questions
c# array of game objects movement help 1 Answer
Enemy Approaching player and then stopping in front?? 1 Answer
Enemies in a row 1 Answer
Enemy AI Movement Decision Making 1 Answer