Update 3D in 2D demo to Godot 3.1.2

This commit is contained in:
Aaron Franke
2020-01-31 15:14:28 -05:00
parent ff93de81bb
commit e3fd4c662c
7 changed files with 272 additions and 45 deletions

View File

@@ -1,38 +1,37 @@
extends Node2D
# Member variables
var viewport = null
var sprite = null
var viewport_sprite = null
var viewport_initial_size = Vector2()
# variables for the sprite animation
# These first 3 members are for the sprite animation.
const MAX_FRAME_FOR_SPRITE = 4
const FRAME_SWITCH_TIME = 0.2
var frame_switch_timer = 0
var viewport_initial_size = Vector2()
onready var viewport = $Viewport
onready var sprite = $Sprite2D
onready var viewport_sprite = $ViewportSprite
func _ready():
# We want Godot to load everything but be hidden for a bit.
viewport_sprite.modulate = Color(1, 1, 1, 0.01)
#warning-ignore:return_value_discarded
get_viewport().connect("size_changed", self, "_root_viewport_size_changed")
viewport = get_node("Viewport")
sprite = get_node("Sprite")
viewport_sprite = get_node("Viewport_Sprite")
viewport_initial_size = viewport.size
# Assign the sprite's texture to the viewport texture
# Assign the sprite's texture to the viewport texture.
viewport.set_clear_mode(Viewport.CLEAR_MODE_ONLY_NEXT_FRAME)
# Let two frames pass to make sure the screen was captured
# Let two frames pass to make sure the screen was captured.
yield(get_tree(), "idle_frame")
yield(get_tree(), "idle_frame")
viewport_sprite.texture = viewport.get_texture()
set_process(true)
# Hide a little bit longer just in case.
for _unused in range(50):
yield(get_tree(), "idle_frame")
viewport_sprite.modulate = Color.white # Default modulate color.
# Simple frame-based animation
# Simple frame-based animation.
func _process(delta):
frame_switch_timer += delta
if frame_switch_timer >= FRAME_SWITCH_TIME:
@@ -41,6 +40,7 @@ func _process(delta):
if sprite.frame > MAX_FRAME_FOR_SPRITE:
sprite.frame = 0
# Called when the root's viewport size changes (i.e. when the window is resized).
# This is done to handle multiple resolutions without losing quality.
func _root_viewport_size_changed():

View File

@@ -1,13 +1,13 @@
[gd_scene load_steps=4 format=2]
[ext_resource path="res://player.scn" type="PackedScene" id=1]
[ext_resource path="res://3d_in_2d.gd" type="Script" id=1]
[ext_resource path="res://robot_demo.png" type="Texture" id=2]
[ext_resource path="res://3D_in_2D.gd" type="Script" id=3]
[ext_resource path="res://robot_3d.tscn" type="PackedScene" id=3]
[node name="3D_in_2D" type="Node2D"]
script = ExtResource( 3 )
[node name="3Din2D" type="Node2D"]
script = ExtResource( 1 )
[node name="Sprite" type="Sprite" parent="."]
[node name="Sprite2D" type="Sprite" parent="."]
position = Vector2( 339.942, 311.204 )
scale = Vector2( 3, 3 )
texture = ExtResource( 2 )
@@ -15,7 +15,7 @@ vframes = 2
hframes = 16
frame = 4
[node name="Viewport_Sprite" type="Sprite" parent="."]
[node name="ViewportSprite" type="Sprite" parent="."]
position = Vector2( 600, 320 )
rotation = 3.14159
@@ -27,13 +27,8 @@ msaa = 2
hdr = false
usage = 3
[node name="player" parent="Viewport" instance=ExtResource( 1 )]
[node name="Camera" parent="Viewport/player" index="1"]
current = true
[node name="Robot3D" parent="Viewport" instance=ExtResource( 3 )]
[node name="Camera2D" type="Camera2D" parent="."]
offset = Vector2( 512, 300 )
current = true
[editable path="Viewport/player"]

View File

@@ -1,14 +0,0 @@
extends KinematicBody
# A simple program to rotate the model around
var model = null
const SPEED = 40
func _ready():
model = get_node("Armature")
set_process(true)
func _process(delta):
model.rotation_degrees.y += delta * SPEED

Binary file not shown.

View File

@@ -16,7 +16,7 @@ _global_script_class_icons={
[application]
config/name="3D in 2D"
run/main_scene="res://3D_in_2D.tscn"
run/main_scene="res://3d_in_2d.tscn"
config/icon="res://icon.png"
[display]

View File

@@ -0,0 +1,8 @@
extends KinematicBody
# A simple script to rotate the model.
onready var model = $Armature
const SPEED = 40
func _process(delta):
model.rotation_degrees.y += delta * SPEED

File diff suppressed because one or more lines are too long