unity3d - Enemy attack the player? -
i created enemy attack player, enemy has gun. want when gun shot, shot goes direction of player. can instantiate can't alter direction bullet attack player in position.
how can ?
i'm trying this.
public class enemyshotgun : monobehaviour { public gameobject[] gun; //gun attack player public gameobject prefabshot; //shot public float enemyshotspeed; private float delayattack; public float timeattack; //player private transform player; // utilize initialization void start () { player = gameobject.findgameobjectwithtag("airplane").transform; } // update called 1 time per frame void update () { delayattack += time.deltatime; if (delayattack >= timeattack){ for(int x = 0; x < gun.length; x++){ gameobject shot = instantiate(prefabshot, gun[x].transform.position, quaternion.identity) gameobject; shot.rigidbody2d.addrelativeforce(new vector2(0, -500)); shot.transform.position = player.position; //bullet goes player position } delayattack = 0; } } }
what need add together forcefulness towards player. not towards -y direction. alter this:
shot.rigidbody2d.addforce(new vector2(0, -500));
to this:
shot.rigidbody2d.addforce(((vector2)(player.position - shot.transform.position)).normalized * 500);
in player.position - shot.transform.position
vector shot player.
also remove line:
shot.transform.position = player.position; //bullet goes player position
it moving shot player position immediately.
unity3d
No comments:
Post a Comment