@xyz much appreciated, please dont get mad ;)
your project works perfect ,
ive adjusted my code ,now i can see the particles but they always go to the right of where im looking at
maincam prints the correct value
heres my raycastscript>
extends RayCast
export(PackedScene) var impact_normal
export var force = 20.0
export var damage = 50.0
export (NodePath) var maincamera_path
onready var maincam = get_node(maincamera_path)
func firebullet():
self.force_raycast_update()
#print(maincam.name)
if self.is_colliding():
var collider = self.get_collider()
var impact = impact_normal.instance()
var n = self.get_collision_normal()
var p = self.get_collision_point()
collider.add_child(impact)
impact.global_transform.origin = p
impact.forward = n
impact.cam = maincam
impact.look_at(p+ -n,Vector3.UP)
if collider is RigidBody:
collider.apply_impulse( p - collider.transform.origin ,- self.global_transform.basis.z * force)
and the decalscript>
extends Spatial
export (AudioStreamSample) var impactsound
export(NodePath) var particles1_path
export(NodePath) var particlesStretched_path
export(NodePath) var myaudio_path
export(NodePath) var decalprojector_path
export var stretchedparticleScale : Vector2
export var decalmaxSize = 0.1
export var decalminSize = 0.05
onready var decalprojector = get_node(decalprojector_path)
onready var particles1 = get_node(particles1_path)
onready var particlesStretched = get_node(particlesStretched_path)
onready var myAudio = get_node(myaudio_path)
var cam = null
var forward: Vector3
var random = RandomNumberGenerator.new()
func _ready():
add_to_group("ignore")
random.randomize()
var randomscale = random.randf_range(decalminSize, decalmaxSize)
decalprojector.scale = Vector3(randomscale,randomscale,randomscale)
addDecal()
func addDecal():
myAudio.stream = impactsound
myAudio.pitch_scale = random.randf_range(0.9, 1.1)
if myAudio.playing == false:
myAudio.play()
particles1.set_one_shot(true)
particles1.set_emitting(true)
particlesStretched.set_one_shot(true)
particlesStretched.set_emitting(true)
func _process(delta):
particlesStretched.process_material.set_shader_param("campos", cam.global_transform.origin)
particlesStretched.process_material.set_shader_param("forward", forward)
particlesStretched.process_material.set_shader_param("decalScale", stretchedparticleScale)
func _on_VisibilityNotifier_camera_exited(_camera):
self.queue_free()