extends CharacterBody3D
var towerType = null
var tower = load("res://Towers/balista.tscn")
var count = 0
var cost = 0
var map = null
var hud = null
func _ready(): # all the stuff for the tower placement, you can ignore
map = get_parent().get_parent()
hud = map.get_node("Camera3D/hud")
if towerType == "balista":
cost = 100
tower = load("res://Towers/balista.tscn")
$Trebuchet.visible = false
$Ballista.visible = true
$Cannon.visible = false
$Catapult.visible = false
elif towerType == "trebuchet":
cost = 200
tower = load("res://Towers/trebuchet.tscn")
$Trebuchet.visible = true
$Ballista.visible = false
$Cannon.visible = false
$Catapult.visible = false
#Tower Defence placement, mouse sceen position to tower placement coords
3 messages · Page 1 of 1 (latest)
elif towerType == "catapult": # all the stuff for the tower placement, you can ignore
cost = 180
tower = load("res://Towers/catapult.tscn")
$Trebuchet.visible = false
$Ballista.visible = false
$Cannon.visible = false
$Catapult.visible = true
elif towerType == "cannon":
cost = 150
tower = load("res://Towers/cannon.tscn")
$Trebuchet.visible = false
$Ballista.visible = false
$Cannon.visible = true
$Catapult.visible = false
else:
map.endPlacement()
func _physics_process(delta): #this stuff is the bit im having issues with
var viewport := get_viewport()
var camera := viewport.get_camera_3d()
var mouse_position := viewport.get_mouse_position()
var origin := camera.project_ray_origin(mouse_position)
var direction := camera.project_ray_normal(mouse_position)
var ray_length := camera.far
var end := origin + direction * ray_length
var space_state := get_world_3d().direct_space_state
var query := PhysicsRayQueryParameters3D.create(origin, end)
var result := space_state.intersect_ray(query)
#var mouse_position_3D:Vector3 = result["position"]
var mouse_position_3D:Vector3 = result.get("position", end)
mouse_position_3D.y = 0
mouse_position_3D.x = mouse_position_3D.x/500 #i think changing this value would help, but no idea what it would need to be
mouse_position_3D.z = mouse_position_3D.z/500
#print(str(mouse_position_3D))
self.global_position = mouse_position_3D
if Input.is_action_just_pressed("Click"):
if hud.allowed:
var instance = tower.instantiate()
map.add_child(instance)
instance.global_position = mouse_position_3D
map.money -= cost
hud.endPlacementMode()
map.endPlacement()
(dot is where cursor is)