![]() |
Attention | Topic was automatically imported from the old Question2Answer platform. |
![]() |
Asked By | potatobanana |
i want to make boss that can shoot from 10 different direction and position .how to make this kind code/script short/less mess/easy to modified.
bullet scene
extends Area2D
export (int) var speed
var velocity = Vector2()
func start_position(new_position,new_rotation):
position = new_position
rotation = new_rotation.angle()
velocity = new_rotation* speed
func _process(delta: float) -> void:
position += velocity*delta
entity scene
extends Sprite
signal shoot
var bullet = preload("res://bullet.tscn")
export (float) var gun_cooldown
var can_shoot = true
func _ready() -> void:
$gun_speed.wait_time = gun_cooldown
func _process(delta: float) -> void:
pass
func _input(event: InputEvent) -> void:
pass
func shoot():
if can_shoot:
can_shoot = false
$gun_speed.start()
var bullet_dir1 = global_dir.right.rotated($gun1.global_rotation)
var bullet_dir2 = global_dir.up.rotated($gun2.global_rotation)
var bullet_dir3 = global_dir.down.rotated($gun3.global_rotation)
var bullet_dir4 = global_dir.left.rotated($gun4.global_rotation)
var bullet_dir5 = global_dir.right.rotated($gun5.global_rotation - 0.3)
var bullet_dir6 = global_dir.right.rotated($gun6.global_rotation + 0.3)
var bullet_dir7 = global_dir.right.rotated($gun7.global_rotation + 1)
var bullet_dir8 = global_dir.right.rotated($gun8.global_rotation - 1)
var bullet_dir9 = global_dir.right.rotated($gun9.global_rotation)
var bullet_dir10= global_dir.right.rotated($gun10.global_rotation)
#############################################################################################
var bullet_pos1 = $pos1.global_position
var bullet_pos2 = $pos2.global_position
var bullet_pos3 = $pos3.global_position
var bullet_pos4 = $pos4.global_position
var bullet_pos5 = $pos5.global_position
var bullet_pos6 = $pos6.global_position
var bullet_pos7 = $pos7.global_position
var bullet_pos8 = $pos8.global_position
var bullet_pos9 = $pos9.global_position
var bullet_pos10 = $pos10.global_position
emit_signal("shoot",bullet,bullet_pos1,bullet_pos2,bullet_pos3,bullet_pos4,bullet_pos5,bullet_pos6,bullet_pos7,bullet_pos8,bullet_pos9,bullet_pos10,bullet_dir1,bullet_dir2,bullet_dir3,bullet_dir4,bullet_dir5,bullet_dir6,bullet_dir7,bullet_dir8,bullet_dir9,bullet_dir10)
func _on_gun_speed_timeout() -> void:
can_shoot = true
map scene
extends Node2D
func _on_player_shoot(bullet,bullet_pos1,bullet_pos2,bullet_pos3,bullet_pos4,bullet_pos5,bullet_pos6,bullet_pos7,bullet_pos8,bullet_pos9,bullet_pos10,bullet_dir1,bullet_dir2,bullet_dir3,bullet_dir4,bullet_dir5,bullet_dir6,bullet_dir7,bullet_dir8,bullet_dir9,bullet_dir10) -> void:
var instance_bullet1 = bullet.instance()
var instance_bullet2 = bullet.instance()
var instance_bullet3 = bullet.instance()
var instance_bullet4 = bullet.instance()
var instance_bullet5 = bullet.instance()
var instance_bullet6 = bullet.instance()
var instance_bullet7 = bullet.instance()
var instance_bullet8 = bullet.instance()
var instance_bullet9 = bullet.instance()
var instance_bullet10 = bullet.instance()
instance_bullet1.start_position(bullet_pos1,bullet_dir1)
instance_bullet2.start_position(bullet_pos2,bullet_dir2)
instance_bullet3.start_position(bullet_pos3,bullet_dir3)
instance_bullet4.start_position(bullet_pos4,bullet_dir4)
instance_bullet5.start_position(bullet_pos5,bullet_dir5)
instance_bullet6.start_position(bullet_pos6,bullet_dir6)
instance_bullet7.start_position(bullet_pos7,bullet_dir7)
instance_bullet8.start_position(bullet_pos8,bullet_dir8)
instance_bullet9.start_position(bullet_pos9,bullet_dir9)
instance_bullet10.start_position(bullet_pos10,bullet_dir10)
add_child(instance_bullet1)
add_child(instance_bullet2)
add_child(instance_bullet3)
add_child(instance_bullet4)
add_child(instance_bullet5)
add_child(instance_bullet6)
add_child(instance_bullet7)
add_child(instance_bullet8)
add_child(instance_bullet9)
add_child(instance_bullet10)
player scene
extends "res://entity.gd"
func _process(delta: float) -> void:
if Input.is_action_pressed("Lclick"):
shoot()
autoload global_dir
extends Node
var idle = Vector2(0,0)
var right = Vector2(1,0)
var left = Vector2(-1,0)
var up = Vector2(0,-1)
var down = Vector2(0,1)
Try creating a loop. In this case a for
loop would be better as there is a specified amount.
Magso | 2020-02-24 13:22