Raycast in ShootController.cs

master
Sascha 2023-09-28 12:09:46 +07:00
parent 8b04234a48
commit 3cc01482f6
6 changed files with 66 additions and 13 deletions

@ -0,0 +1,6 @@
<Project Sdk="Godot.NET.Sdk/4.2.0-dev.5">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<EnableDynamicLoading>true</EnableDynamicLoading>
</PropertyGroup>
</Project>

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bk5ovc0kwj1g2"
path="res://.godot/imported/icon-dark.png-2f929ad0cdeb04ca4efbb81b0e9c8312.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://graphics/icon-dark.png"
dest_files=["res://.godot/imported/icon-dark.png-2f929ad0cdeb04ca4efbb81b0e9c8312.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

@ -13,13 +13,13 @@ config_version=5
config/name="Evolution" config/name="Evolution"
run/main_scene="res://scenes/World.tscn" run/main_scene="res://scenes/World.tscn"
config/features=PackedStringArray("4.2", "C#", "Forward Plus") config/features=PackedStringArray("4.2", "C#", "Forward Plus")
boot_splash/image="res://graphics/icon-dark.png"
config/icon="res://graphics/Orange/texture_01.png" config/icon="res://graphics/Orange/texture_01.png"
[display] [display]
window/size/viewport_width=1920 window/size/viewport_width=1920
window/size/viewport_height=1024 window/size/viewport_height=1024
window/size/mode=2
[dotnet] [dotnet]

@ -1,4 +1,4 @@
[gd_scene load_steps=19 format=3 uid="uid://bwn0di86nkots"] [gd_scene load_steps=18 format=3 uid="uid://bwn0di86nkots"]
[ext_resource type="Script" path="res://scripts/World.cs" id="1_2chdl"] [ext_resource type="Script" path="res://scripts/World.cs" id="1_2chdl"]
[ext_resource type="PackedScene" uid="uid://bpf3krgeeo7pt" path="res://scenes/Box.tscn" id="2_gmm05"] [ext_resource type="PackedScene" uid="uid://bpf3krgeeo7pt" path="res://scenes/Box.tscn" id="2_gmm05"]
@ -10,7 +10,6 @@
[ext_resource type="PackedScene" uid="uid://dgufgjsdd5407" path="res://scenes/PurpleBox.tscn" id="6_kqrbp"] [ext_resource type="PackedScene" uid="uid://dgufgjsdd5407" path="res://scenes/PurpleBox.tscn" id="6_kqrbp"]
[ext_resource type="Script" path="res://scripts/ShootController.cs" id="9_tfx87"] [ext_resource type="Script" path="res://scripts/ShootController.cs" id="9_tfx87"]
[ext_resource type="PackedScene" uid="uid://ci87cvbfpu83q" path="res://scenes/blasterA.tscn" id="10_sekn8"] [ext_resource type="PackedScene" uid="uid://ci87cvbfpu83q" path="res://scenes/blasterA.tscn" id="10_sekn8"]
[ext_resource type="PackedScene" uid="uid://dkkx1caoxhy07" path="res://character/characterLargeFemale.tscn" id="11_qsy5u"]
[sub_resource type="Sky" id="Sky_kc6p3"] [sub_resource type="Sky" id="Sky_kc6p3"]
@ -117,10 +116,11 @@ text = "Collisions: 0"
[node name="Blaster" type="Node" parent="."] [node name="Blaster" type="Node" parent="."]
[node name="ShootController" type="Node" parent="Blaster" node_paths=PackedStringArray("blaster", "shootParticle")] [node name="ShootController" type="Node" parent="Blaster" node_paths=PackedStringArray("blaster", "shootParticle", "camera")]
script = ExtResource("9_tfx87") script = ExtResource("9_tfx87")
blaster = NodePath("../blasterA") blaster = NodePath("../blasterA")
shootParticle = NodePath("../blasterA/ShootParticle") shootParticle = NodePath("../blasterA/ShootParticle")
camera = NodePath("../../Camera3D")
[node name="blasterA" parent="Blaster" instance=ExtResource("10_sekn8")] [node name="blasterA" parent="Blaster" instance=ExtResource("10_sekn8")]
transform = Transform3D(-5, 0, -7.54979e-07, 0, 5, 0, 7.54979e-07, 0, -5, 0, 15, 40) transform = Transform3D(-5, 0, -7.54979e-07, 0, 5, 0, 7.54979e-07, 0, -5, 0, 15, 40)
@ -134,6 +134,3 @@ speed_scale = 5.0
randomness = 1.0 randomness = 1.0
process_material = SubResource("ParticleProcessMaterial_qlryv") process_material = SubResource("ParticleProcessMaterial_qlryv")
draw_pass_1 = SubResource("SphereMesh_d1ukr") draw_pass_1 = SubResource("SphereMesh_d1ukr")
[node name="characterLargeFemale" parent="." instance=ExtResource("11_qsy5u")]
transform = Transform3D(5, 0, 0, 0, 5, 0, 0, 0, 5, -27.2805, 0.0500031, 17.4889)

@ -1,19 +1,35 @@
using System.Collections.Generic;
using System.Linq;
using Godot; using Godot;
using Godot.Collections;
namespace Evolution.scripts; namespace Evolution.scripts;
public partial class ShootController : Node { public partial class ShootController : Node {
[Export] private Node3D blaster; [Export] private Node3D blaster;
[Export] private GpuParticles3D shootParticle; [Export] private GpuParticles3D shootParticle;
[Export] private Camera3D camera;
public override void _Ready() => GD.Print($"{blaster}: {shootParticle}"); public override void _Ready() => GD.Print($"{blaster}: {shootParticle}");
public override void _Input(InputEvent @event) { public override void _Input(InputEvent @event) {
if (@event is InputEventMouseButton eventMouseButton) { switch (@event) {
case InputEventMouseButton eventMouseButton:
shootParticle.Emitting = eventMouseButton.Pressed; shootParticle.Emitting = eventMouseButton.Pressed;
break;
case InputEventMouseMotion eventMouseMotion:
Vector2 mousePosition = eventMouseMotion.Position;
Vector3 raycastFrom = camera.ProjectRayOrigin(mousePosition);
Vector3 raycastTo = camera.ProjectRayNormal(mousePosition);
PhysicsDirectSpaceState3D spaceState = camera.GetWorld3D().DirectSpaceState;
PhysicsRayQueryParameters3D query = PhysicsRayQueryParameters3D.Create(raycastFrom, raycastTo);
Dictionary raycastResults = spaceState.IntersectRay(query);
foreach (KeyValuePair<Variant,Variant> raycastResult in raycastResults) {
if (raycastResult.Key.AsString() == "position") {
GD.Print($"raycastResult.Position = {raycastResult.Value}");
blaster.LookAt(raycastResults.FirstOrDefault().Value.AsVector3());
} }
else if (@event is InputEventMouseMotion eventMouseMotion) { }
blaster.LookAt(new(eventMouseMotion.Position.X, eventMouseMotion.Position.Y, 0)); break;
// blaster.RotateY(eventMouseMotion.GlobalPosition.Y);
} }
} }
} }