Sou iniciante em Godot, atualmente estou brincando com armas hitscan etc., e usandointersect_ray()
Ao tentar escrever código usando, Intersect_ray()
continuo recebendo uma mensagem de erro "Muitos argumentos para a chamada "intersect_ray ()". Esperado no máximo 1, mas recebeu 2." não sei o que fiz de errado? Aqui está o código:
var collision = bullet.intersect_ray(muzle.transform.origin, aimcast.get_collision_point
se ajudar, estou usando um tutorial: https://www.youtube.com/watch?v=4jbfIN4t83k&list=PLJJ-tyPiN1L_68DjYLfn7c1Yq8Kx6NWPw&index=7
bem-vindo ao SO!
A resposta para o seu problema específico é que seu tutorial é antigo e muitas APIs foram alteradas de Godot 3 para Godot 4. O
intersect_ray()
método agora usa um único argumento de um tipo especial que contém todos os parâmetros necessários. Portanto, você precisa criar uma instância desse tipoPhysicsRayQueryParameters3D
e depois passá-la para o método.Veja este tópico do reddit onde alguém fez exatamente a mesma pergunta: https://www.reddit.com/r/godot/comments/u0fboh/intersect_ray_too_many_arguments_godot_40/
Veja também os documentos do Godot sobre raycasting: https://docs.godotengine.org/en/stable/tutorials/physics/ray-casting.html
A maneira geral de descobrir essa mensagem de erro é observar a assinatura do método. Ele lhe dirá que tipo de argumentos espera e quantos. Para fazer isso, pressione CTRL e clique no método no editor ou selecione o método e pressione F12 (eu acho). Você será direcionado para a documentação desse método.