资源来自于github上的开源项目https://github.com/kidscancode/circle_jump
步骤参考网站的游戏教学
首先新建一个circle_jump项目
修改屏幕尺寸为480X854
移动设备方向改为垂直
将拉伸模式设为2d 拉伸纵横比设为keep
勾选此项以使得鼠标能模拟手机触摸
完成项目设置后我们建立以下文件夹方便管理文件,并将下载好的资源复制过来
接下来我们只做玩家(jumper)和圆圈
添加以下节点
Area2D
(Jumper)
Sprite
CollisionPolygon2D
VisibilityNotifier2D
为Sprite
添加纹理图片res://assets/images/jumper.png
将Sprite
旋转90
度
为CollisionPolygon2D
添加一个三角形状
保存场景jumper.tscn
并为其添加脚本jumper.gd
给Jumper
连接信号area_entered()
jumper.gd
extends Area2D
var velocity = Vector2(100, 0)
var jump_speed = 1000
var target = null
func _unhandled_input(event):
if target and event is InputEventScreenTouch and event.pressed:
jump()
func jump():
target = null
velocity = transform.x * jump_speed
func _on_Jumper_area_entered(area):
target = area
velocity = Vector2()
func _physics_process(delta):
if target:
transform = target.orbit_position.global_transform
else:
position += velocity * delta
使用着色器,以便我们可以自定义Sprite
的颜色
在Sprite
的Material
属性中添加一个新的ShaderMaterial
,再新建一个新的Shader
点击Shade
按钮在编辑其中添加以下代码
shader_type canvas_item;
uniform vec4 color : hint_color;
void fragment() {
COLOR.rgb = color.rgb;
COLOR.a = texture(TEXTURE, UV).a;
}
并可适当修改Color
属性的值
为了方便复用,将shader
保存为res://objects/color.shader
添加以下节点
Area2D
(Circle)
Sprite
CollisionShape2D
Node2D
(Pivot)
Position2D
(OrbitPosition)使用res://assets/images/circle_1.png
作为Sprite
添加圆形的碰撞区域
适当修改轨道位置
新建shader
并加载之前保存的shader
将场景保存为circle.tscn
并添加circle.gd
脚本
extends Area2D
onready var orbit_position = $Pivot/OrbitPosition
var radius = 100
var rotation_speed = PI
func _ready():
init()
func init(_radius=radius):
radius = _radius
$CollisionShape2D.shape = $CollisionShape2D.shape.duplicate()
$CollisionShape2D.shape.radius = radius
var img_size = $Sprite.texture.get_size().x / 2
$Sprite.scale = Vector2(1, 1) * radius / img_size
orbit_position.position.x = radius + 25
func _process(delta):
$Pivot.rotation += rotation_speed * delta
新建Main.tscn
添加Circle和Jumper,并摆放到适当位置
运行场景
本文地址:https://blog.csdn.net/qq_25969985/article/details/107900542
如对本文有疑问, 点击进行留言回复!!
提高github下载速度的方法可达到2MB/s(100%有效)
git中submodule子模块的添加、使用和删除的示例代码
网友评论