微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

拾取通电时实例化游戏对象 godot

如何解决拾取通电时实例化游戏对象 godot

你好,我正在制作一款超级乒乓球游戏,它具有增强功能,可以为游戏添加一个球。下一个球应该出现在屏幕中央。

  extends Node2D

var collect = false


func _physics_process(delta):
    $Area2D/AnimatedSprite.play("Spin")



func _on_Area2D_body_entered(body):
    print(body.name)
    if body.name=="Ball"&&collect==false:
        collect = true
        $Collection.play()
        $AnimationPlayer.play("Fade")
        $Area2D/AnimatedSprite.stop()
        var ball =  load("res://ball/Ball.tscn").instance()
        ball.global_position = Vector2(0,0)

球体播放动画并发出声音,但球未加载到游戏中。

Godot 3.2.3 版

解决方法

我设法想出了一个解决方案,但如果有人有更好的建议,我愿意接受。

extends Node2D

var collect = false
var ballscene = null

func _physics_process(delta):
    $Area2D/AnimatedSprite.play("Spin")



func _on_Area2D_body_entered(body):
    print(body.name)
    if body.name=="Ball"&&collect==false:
        collect = true
        $Collection.play()
        $AnimationPlayer.play("Fade")
        $Area2D/AnimatedSprite.stop()
        var ball =  load("res://ball/Ball.tscn")
        ballscene = ball.instance()
        find_parent('SpawnManager').add_child(ballscene)
        
        
,

我看到您找到了问题的答案,我将分享我在我的一款游戏中设法使用“生成器”的代码:

extends Node2D

export(PackedScene) var to_be_spawned 
export(int) var amount

func _ready():
    pass
func _process(delta):
    pass

func spawn_this():
    
    # _N is just to count,not used
    for _N in range(amount):
        
        var nut
        nut = to_be_spawned.instance()

        nut.position = self.position
        nut.scale = self.scale
        
        get_parent().add_child(nut)

您需要在“to_be_Spawned”中选择要生成的场景,任何场景,我建议不要生成初始菜单,例如 XD 在此之后,我在我想要的节点实例化并像粒子一样动画。

The AnimationPlayer inside the Spawner to call the function spawn_this

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。