mirror of
https://github.com/Steffo99/pineapple-surf.git
synced 2024-11-22 07:44:20 +00:00
Create floating pineapple
Not too happy with the physics so far but it's ok
This commit is contained in:
parent
a073bc4e73
commit
1cb3a8f37f
11 changed files with 178 additions and 1 deletions
1
assets/island_model/pineapple.crocotile
Normal file
1
assets/island_model/pineapple.crocotile
Normal file
File diff suppressed because one or more lines are too long
9
assets/island_model/pineapple.mtl
Normal file
9
assets/island_model/pineapple.mtl
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
newmtl material2
|
||||||
|
Ka 1.000000 1.000000 1.000000
|
||||||
|
Kd 1.000000 1.000000 1.000000
|
||||||
|
Ks 0.000000 0.000000 0.000000
|
||||||
|
Tr 0.000000
|
||||||
|
illum 0
|
||||||
|
Ns 0.000000
|
||||||
|
map_Kd texture_2.png
|
||||||
|
map_d texture_2.png
|
BIN
assets/island_model/pineapple.obj
(Stored with Git LFS)
Normal file
BIN
assets/island_model/pineapple.obj
(Stored with Git LFS)
Normal file
Binary file not shown.
21
assets/island_model/pineapple.obj.import
Normal file
21
assets/island_model/pineapple.obj.import
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wavefront_obj"
|
||||||
|
importer_version=1
|
||||||
|
type="Mesh"
|
||||||
|
uid="uid://dfsr4x88l1l2r"
|
||||||
|
path="res://.godot/imported/pineapple.obj-f022637733323e5da85a7579b2bebb0e.mesh"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
files=["res://.godot/imported/pineapple.obj-f022637733323e5da85a7579b2bebb0e.mesh"]
|
||||||
|
|
||||||
|
source_file="res://assets/island_model/pineapple.obj"
|
||||||
|
dest_files=["res://.godot/imported/pineapple.obj-f022637733323e5da85a7579b2bebb0e.mesh", "res://.godot/imported/pineapple.obj-f022637733323e5da85a7579b2bebb0e.mesh"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
generate_tangents=true
|
||||||
|
scale_mesh=Vector3(1, 1, 1)
|
||||||
|
offset_mesh=Vector3(0, 0, 0)
|
||||||
|
optimize_mesh=true
|
BIN
assets/island_model/texture_2.png
(Stored with Git LFS)
Normal file
BIN
assets/island_model/texture_2.png
(Stored with Git LFS)
Normal file
Binary file not shown.
34
assets/island_model/texture_2.png.import
Normal file
34
assets/island_model/texture_2.png.import
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://cukw0nvmbodxq"
|
||||||
|
path="res://.godot/imported/texture_2.png-3fec962867bbfafd5a9fea7753401573.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/island_model/texture_2.png"
|
||||||
|
dest_files=["res://.godot/imported/texture_2.png-3fec962867bbfafd5a9fea7753401573.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=3
|
||||||
|
compress/lossy_quality=0.0
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/bptc_ldr=0
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=true
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/fix_alpha_border=false
|
||||||
|
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=0
|
|
@ -1,4 +1,4 @@
|
||||||
[gd_scene load_steps=15 format=3 uid="uid://bg88gc1w1gw5m"]
|
[gd_scene load_steps=16 format=3 uid="uid://bg88gc1w1gw5m"]
|
||||||
|
|
||||||
[ext_resource type="Shader" path="res://island/Sea.gdshader" id="1_agjfy"]
|
[ext_resource type="Shader" path="res://island/Sea.gdshader" id="1_agjfy"]
|
||||||
[ext_resource type="Texture2D" uid="uid://bdoifsf6k0qb8" path="res://assets/water_tile.png" id="1_w6ara"]
|
[ext_resource type="Texture2D" uid="uid://bdoifsf6k0qb8" path="res://assets/water_tile.png" id="1_w6ara"]
|
||||||
|
@ -9,6 +9,7 @@
|
||||||
[ext_resource type="PackedScene" uid="uid://bknwefv5ycc3u" path="res://island/PyramidSmolMesh.tscn" id="6_klmt8"]
|
[ext_resource type="PackedScene" uid="uid://bknwefv5ycc3u" path="res://island/PyramidSmolMesh.tscn" id="6_klmt8"]
|
||||||
[ext_resource type="PackedScene" uid="uid://boxtb3trgcy8c" path="res://island/PillarMesh.tscn" id="7_grmwj"]
|
[ext_resource type="PackedScene" uid="uid://boxtb3trgcy8c" path="res://island/PillarMesh.tscn" id="7_grmwj"]
|
||||||
[ext_resource type="PackedScene" uid="uid://cf35yl04qtru3" path="res://island/CropTile.tscn" id="8_4ooup"]
|
[ext_resource type="PackedScene" uid="uid://cf35yl04qtru3" path="res://island/CropTile.tscn" id="8_4ooup"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://v7bv81krh12e" path="res://island/Pineapple.tscn" id="10_cvxfg"]
|
||||||
|
|
||||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_3uyyi"]
|
[sub_resource type="ShaderMaterial" id="ShaderMaterial_3uyyi"]
|
||||||
render_priority = 0
|
render_priority = 0
|
||||||
|
@ -95,3 +96,8 @@ debug_growth_offset = 0.5
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 2, 8)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1, 2, 8)
|
||||||
debug_growth = true
|
debug_growth = true
|
||||||
debug_growth_offset = 0.6
|
debug_growth_offset = 0.6
|
||||||
|
|
||||||
|
[node name="Pineapple" parent="." instance=ExtResource("10_cvxfg")]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 3, 31)
|
||||||
|
|
||||||
|
[editable path="Pineapple"]
|
||||||
|
|
29
island/MoveTowardsPlayer.gd
Normal file
29
island/MoveTowardsPlayer.gd
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
extends Node
|
||||||
|
|
||||||
|
@export var force_multiplier: float = 0.0
|
||||||
|
|
||||||
|
# Must be BELOW the player node to work!
|
||||||
|
@onready var parent: RigidBody3D = get_parent()
|
||||||
|
@onready var magnet_area: Area3D = $MagnetArea
|
||||||
|
@onready var player: CharacterBody3D = get_tree().root.find_child("Player", true, false)
|
||||||
|
|
||||||
|
|
||||||
|
var captured = false
|
||||||
|
|
||||||
|
|
||||||
|
func capture():
|
||||||
|
captured = true
|
||||||
|
|
||||||
|
|
||||||
|
func _physics_process(delta):
|
||||||
|
if captured:
|
||||||
|
var direction = player.position - parent.position
|
||||||
|
var force = direction.normalized() * force_multiplier * delta
|
||||||
|
force.y = abs(force.y)
|
||||||
|
parent.apply_force(force)
|
||||||
|
|
||||||
|
|
||||||
|
func _on_magnet_area_body_entered(body: Node3D):
|
||||||
|
if body.name == "Player":
|
||||||
|
print("Player captured pickup!")
|
||||||
|
capture()
|
37
island/Pineapple.tscn
Normal file
37
island/Pineapple.tscn
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
[gd_scene load_steps=5 format=3 uid="uid://v7bv81krh12e"]
|
||||||
|
|
||||||
|
[ext_resource type="PackedScene" uid="uid://bwwpi0itor6cw" path="res://island/PineappleMesh.tscn" id="1_ndmmp"]
|
||||||
|
[ext_resource type="Script" path="res://island/MoveTowardsPlayer.gd" id="2_d3itl"]
|
||||||
|
|
||||||
|
[sub_resource type="CylinderShape3D" id="CylinderShape3D_t5bjw"]
|
||||||
|
height = 0.9
|
||||||
|
radius = 0.3
|
||||||
|
|
||||||
|
[sub_resource type="CylinderShape3D" id="CylinderShape3D_m5gp0"]
|
||||||
|
height = 6.0
|
||||||
|
radius = 3.0
|
||||||
|
|
||||||
|
[node name="Pineapple" type="RigidBody3D"]
|
||||||
|
collision_layer = 2
|
||||||
|
lock_rotation = true
|
||||||
|
linear_damp = 3.0
|
||||||
|
|
||||||
|
[node name="Shape" type="CollisionShape3D" parent="."]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.45, 0)
|
||||||
|
shape = SubResource("CylinderShape3D_t5bjw")
|
||||||
|
|
||||||
|
[node name="PineappleMesh" parent="." instance=ExtResource("1_ndmmp")]
|
||||||
|
|
||||||
|
[node name="MoveTowardsPlayer" type="Node3D" parent="."]
|
||||||
|
script = ExtResource("2_d3itl")
|
||||||
|
force_multiplier = 1250.0
|
||||||
|
|
||||||
|
[node name="MagnetArea" type="Area3D" parent="MoveTowardsPlayer"]
|
||||||
|
collision_layer = 0
|
||||||
|
monitorable = false
|
||||||
|
|
||||||
|
[node name="Shape" type="CollisionShape3D" parent="MoveTowardsPlayer/MagnetArea"]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, 0)
|
||||||
|
shape = SubResource("CylinderShape3D_m5gp0")
|
||||||
|
|
||||||
|
[connection signal="body_entered" from="MoveTowardsPlayer/MagnetArea" to="MoveTowardsPlayer" method="_on_magnet_area_body_entered"]
|
29
island/PineappleMesh.tscn
Normal file
29
island/PineappleMesh.tscn
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
[gd_scene load_steps=4 format=3 uid="uid://bwwpi0itor6cw"]
|
||||||
|
|
||||||
|
[ext_resource type="Texture2D" uid="uid://cukw0nvmbodxq" path="res://assets/island_model/texture_2.png" id="1_x2h5q"]
|
||||||
|
|
||||||
|
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_8u420"]
|
||||||
|
resource_name = "material2"
|
||||||
|
transparency = 1
|
||||||
|
shading_mode = 0
|
||||||
|
albedo_texture = ExtResource("1_x2h5q")
|
||||||
|
texture_filter = 0
|
||||||
|
billboard_mode = 1
|
||||||
|
|
||||||
|
[sub_resource type="ArrayMesh" id="ArrayMesh_sjes8"]
|
||||||
|
_surfaces = [{
|
||||||
|
"aabb": AABB(-0.5, 0, 0, 1.00001, 1.00001, 1e-05),
|
||||||
|
"attribute_data": PackedByteArray(40, 175, 161, 62, 0, 0, 0, 0, 229, 53, 148, 62, 172, 170, 42, 62, 229, 53, 148, 62, 0, 0, 0, 0, 40, 175, 161, 62, 172, 170, 42, 62),
|
||||||
|
"format": 4119,
|
||||||
|
"index_count": 6,
|
||||||
|
"index_data": PackedByteArray(0, 0, 1, 0, 2, 0, 3, 0, 1, 0, 0, 0),
|
||||||
|
"material": SubResource("StandardMaterial3D_8u420"),
|
||||||
|
"name": "material2",
|
||||||
|
"primitive": 3,
|
||||||
|
"vertex_count": 4,
|
||||||
|
"vertex_data": PackedByteArray(0, 0, 0, 63, 0, 0, 128, 63, 0, 0, 0, 0, 255, 127, 255, 127, 255, 255, 255, 191, 0, 0, 0, 191, 0, 0, 0, 0, 0, 0, 0, 0, 255, 127, 255, 127, 255, 255, 255, 191, 0, 0, 0, 191, 0, 0, 128, 63, 0, 0, 0, 0, 255, 127, 255, 127, 255, 255, 255, 191, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 255, 127, 255, 127, 255, 255, 255, 191)
|
||||||
|
}]
|
||||||
|
|
||||||
|
[node name="PineappleMesh" type="MeshInstance3D"]
|
||||||
|
mesh = SubResource("ArrayMesh_sjes8")
|
||||||
|
skeleton = NodePath("../..")
|
|
@ -108,6 +108,11 @@ fire={
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[layer_names]
|
||||||
|
|
||||||
|
3d_physics/layer_1="Default"
|
||||||
|
3d_physics/layer_2="Pickups"
|
||||||
|
|
||||||
[rendering]
|
[rendering]
|
||||||
|
|
||||||
renderer/rendering_method="gl_compatibility"
|
renderer/rendering_method="gl_compatibility"
|
||||||
|
|
Loading…
Reference in a new issue