From cd7f1837a4d388809120835c63b9e4e40cd27719 Mon Sep 17 00:00:00 2001 From: Estrela Allan p1923381 Date: Sat, 2 May 2020 13:47:22 +0200 Subject: [PATCH] ajout animation mobs+ input player + animation --- DungeonAndDeamon/DungeonAndDaemon.pck | Bin 1482656 -> 1496896 bytes DungeonAndDeamon/project.godot | 20 +++++++ DungeonAndDeamon/root.tscn | 2 +- .../DungeonAndDemaonScript/GestionPlayer.cpp | 32 +++++++++++- .../DungeonAndDemaonScript/GestionPlayer.h | 4 ++ .../MobsCorpACorpIA.cpp | 49 +++++++++++++++--- .../DungeonAndDemaonScript/MobsCorpACorpIA.h | 4 +- 7 files changed, 100 insertions(+), 11 deletions(-) diff --git a/DungeonAndDeamon/DungeonAndDaemon.pck b/DungeonAndDeamon/DungeonAndDaemon.pck index 9d5580b5a5c88aa6ec223e18f7a5b853fb9ee875..b28ab600b56b7b0971f77fa081b2bf86ca9b689f 100644 GIT binary patch delta 5628 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 dBa #include #include - +#include GestionPlayer::GestionPlayer() { @@ -78,6 +78,14 @@ void GestionPlayer::traitementInput(float dt) gauche(); if (i->is_action_pressed("ui_right")) droit(); + if (i->is_action_pressed("dash")) + dash(); + if (i->is_action_pressed("attack")) + attack(); + if (i->is_action_pressed("attack2")) + bigattack(); + if (i->is_action_pressed("block")) + block(); // update Velocity @@ -109,6 +117,11 @@ void GestionPlayer::animation() sprite_player_ptr->play("Walk"); sprite_player_ptr->set_flip_h(true); } + else if(pv <= 0) + { + sprite_player_ptr->play("mort"); + } + else { sprite_player_ptr->play("Idle"); @@ -166,6 +179,23 @@ void GestionPlayer::idle() p.velocity.x = 0.0; } +void GestionPlayer::dash() +{ + p.velocity.x =+1000; + sprite_player_ptr->play("dash"); +} + void GestionPlayer::attack() { + sprite_player_ptr->play("attack"); } + +void GestionPlayer::block() +{ + sprite_player_ptr->play("block"); +} + +void GestionPlayer::bigattack() +{ + sprite_player_ptr->play("attack2"); +} \ No newline at end of file diff --git a/DungeonAndDeamonScript/DungeonAndDemaonScript/GestionPlayer.h b/DungeonAndDeamonScript/DungeonAndDemaonScript/GestionPlayer.h index b73f7ca..1f3b1c7 100644 --- a/DungeonAndDeamonScript/DungeonAndDemaonScript/GestionPlayer.h +++ b/DungeonAndDeamonScript/DungeonAndDemaonScript/GestionPlayer.h @@ -44,11 +44,15 @@ private: void gauche(); void bas(); void saut(); + void dash(); void idle(); void attack(); + void bigattack(); void animation(); + void block(); public: const float speed = 100.f; + float pv = 100; const float GamePlayMultiplicator = 100.0f; const float gravity = 9.8f * GamePlayMultiplicator; const float power_jump = -5.0f * GamePlayMultiplicator; diff --git a/DungeonAndDeamonScript/DungeonAndDemaonScript/MobsCorpACorpIA.cpp b/DungeonAndDeamonScript/DungeonAndDemaonScript/MobsCorpACorpIA.cpp index 4ce246f..a6a6dda 100644 --- a/DungeonAndDeamonScript/DungeonAndDemaonScript/MobsCorpACorpIA.cpp +++ b/DungeonAndDeamonScript/DungeonAndDemaonScript/MobsCorpACorpIA.cpp @@ -1,5 +1,6 @@ #include "MobsCorpACorpIA.h" #include +#include #include #include #include @@ -8,7 +9,7 @@ MobsCorpACorpIA::MobsCorpACorpIA() { - sprite_MobsCorpACorp_ptr = Sprite::_new(); + sprite_MobsCorpACorp_ptr = AnimatedSprite::_new(); collision_MobsCorpACorp_ptr = CollisionShape2D::_new(); texture_MobsCorpACorp_ptr.instance(); texture_MobsCorpACorp_ptr->_new(); @@ -37,6 +38,7 @@ void MobsCorpACorpIA::_physics_process(float dt) void MobsCorpACorpIA::_process(float delta) { + animation(); } void MobsCorpACorpIA::_init() @@ -63,20 +65,25 @@ void MobsCorpACorpIA::setupMobsCorpACorp() //Setup du shape - Godot::print("SetUp de Shape Mobs"); - shape_MobsCorpACorp_ptr.ptr()->_new(); + //Chargement de la texture Godot::print("SetUp de Texture Mobs"); texture_MobsCorpACorp_ptr = ResourceLoader::get_singleton()->load("res://Character/Fire Elemental Sprite Sheet/fireelemental00.png"); //setup du sprite - Godot::print("SetUp de Sprite Mobs"); - sprite_MobsCorpACorp_ptr->set_texture(texture_MobsCorpACorp_ptr); + //Godot::print("SetUp de Sprite"); + Ref spriteFrames = ResourceLoader::get_singleton()->load("res://Character/Fire Elemental Sprite Sheet/fireelement.tres"); + sprite_MobsCorpACorp_ptr->set_sprite_frames(spriteFrames); + + PoolStringArray AnimNames = spriteFrames->get_animation_names(); + PoolStringArray::Read r = AnimNames.read(); + Godot::print("Animations Names"); + for (int i = 0; i < AnimNames.size(); ++i) + { + Godot::print(r[i]); + } - //setup du collision Shape - Godot::print("SetUp de CollisionShape Mobs"); - collision_MobsCorpACorp_ptr->set_shape(shape_MobsCorpACorp_ptr); } @@ -133,6 +140,32 @@ void MobsCorpACorpIA::mouvement(float dt) } +} + + +void MobsCorpACorpIA::animation() +{ + + if (m.velocity.x > 0.0f) + { + sprite_MobsCorpACorp_ptr->play("walk"); + sprite_MobsCorpACorp_ptr->set_flip_h(false); + } + else if (m.velocity.x < 0.0f) + { + sprite_MobsCorpACorp_ptr->play("walk"); + sprite_MobsCorpACorp_ptr->set_flip_h(true); + } + else if (pv <=0 ) + { + sprite_MobsCorpACorp_ptr->play("dead"); + } + else + { + sprite_MobsCorpACorp_ptr->play("idle"); + } + + } void MobsCorpACorpIA::droit() diff --git a/DungeonAndDeamonScript/DungeonAndDemaonScript/MobsCorpACorpIA.h b/DungeonAndDeamonScript/DungeonAndDemaonScript/MobsCorpACorpIA.h index fa48d51..2973e01 100644 --- a/DungeonAndDeamonScript/DungeonAndDemaonScript/MobsCorpACorpIA.h +++ b/DungeonAndDeamonScript/DungeonAndDemaonScript/MobsCorpACorpIA.h @@ -15,7 +15,7 @@ class MobsCorpACorpIA : public KinematicBody2D { public: - Sprite* sprite_MobsCorpACorp_ptr; + AnimatedSprite* sprite_MobsCorpACorp_ptr; CollisionShape2D* collision_MobsCorpACorp_ptr; Ref texture_MobsCorpACorp_ptr; @@ -35,6 +35,7 @@ public: void _process(float delta); void _init(); void _ready(); + void animation(); private: void droit(); @@ -61,6 +62,7 @@ public: public: void Action(); const float GamePlayMultiplicator = 100.0f; + float pv = 100.0f; const float gravity = 9.8f * GamePlayMultiplicator; const float speed = 50.f; const float power_jump = -2.0f * GamePlayMultiplicator;