How to make a Roblox JOJO game #2 | Making Stand Combat
Summary
TLDRIn this tutorial video, the creator guides viewers through the process of making a style combat system in Roblox using Lua scripting. The video offers practical tips, such as avoiding the use of 'part.Touched' for hitboxes and not implementing combos on the client-side to prevent exploits. The script includes setting up cooldowns, creating combo animations, and utilizing raycast boxes for precise hit detection. The tutorial also covers adding a combo system with attributes, tweening character movements, and implementing a damage system with hitboxes. The creator promises to continue with sound effects, stand features, knockbacks, and particle effects in the next installment, aiming to provide a comprehensive guide for building an engaging combat experience in Roblox.
Takeaways
- 🛠️ The video is a tutorial on creating a style combat system in Roblox using Juju series.
- 🚫 Avoid using 'part.Touched' for hitboxes as it can be easily manipulated and is not server-side.
- 🔄 Do not use client-side combo systems as they can be exploited by resetting the combo.
- ⏱️ Implement cooldowns for summoning to prevent spamming and ensure fairness in gameplay.
- 📊 Use 'os.time()' to track the time passed since a specific action, aiding in cooldown management.
- 🔄 Create a combo system that resets after a certain number of hits to maintain game balance.
- 🎭 Ensure animations are prepared and named in a specific order to correspond with the combo sequence.
- 🤖 Utilize 'AnimationController' for smooth transitions between different combat animations.
- 📡 Use server scripts to manage combo logic to prevent client-side manipulation.
- 🎯 Implement precise hitboxes using 'raycast box' for accurate combat interactions.
- 🔧 Add attributes to manage whether a character is currently attacking to prevent overlapping animations.
Q & A
What is the main topic of the video?
-The main topic of the video is creating a style combat system in a game development environment, likely Roblox, with a focus on avoiding common mistakes and implementing proper cooldowns and hitboxes.
Why should part touch not be used for the hitbox according to the video?
-Part touch should not be used for the hitbox because it can be easily manipulated by experts to extend the hitbox, which can lead to unfair gameplay where the hitbox can still hit a dummy on the server.
What is the reason for not using combos in the local script?
-Combos should not be used in the local script because it makes them client-sided, which can allow players to exploit the system and create infinite combos by resetting the combo every time.
What is the purpose of the 'coco cooldown' variable in the script?
-The 'coco cooldown' variable is used to implement a cooldown period for summoning, preventing players from repeatedly summoning without any delay.
What does 'os.time()' return and how is it used in the script?
-'os.time()' returns the time in seconds since January 1, 1970. In the script, it is used to calculate the time that has passed since a certain action, like pressing a key, to manage cooldowns.
What is the significance of the 'animation' variable in the combat script?
-The 'animation' variable is crucial as it controls the character's movements and actions during combat. It is loaded from the 'anim' folder and plays a sequence of animations based on the combo system.
Why is the 'attacking' attribute used in the script?
-The 'attacking' attribute is used to check if the character is currently in an attacking state. If the character is attacking, the script will stop to prevent overlapping animations or further actions until the attack is completed.
What is the purpose of the 'tween' service in the script?
-The 'tween' service is used to create smooth transitions between different character positions or animations, such as moving the character's stand forward or backward during combat.
Why is the 'raycast box' preferred over 'part.touch' or 'magnitude' for hitboxes in this tutorial?
-The 'raycast box' is preferred because it offers more precision for hit detection compared to 'part.touch' or 'magnitude'. It allows for a more accurate representation of where the hit occurs.
How does the script handle the cooldown after the fifth combo?
-The script includes a task delay for one second after the fifth combo is executed. This pause ensures that there is a cooldown period before the player can continue with another combo.
What is the final step in the script related to the hitbox?
-The final step in the script related to the hitbox is to create the hitbox using 'module.castmore' with the appropriate parts table indexed by the combo, and then handling the hit detection with the 'hitbox.onHit' event.
Outlines
🛠️ Combat Scripting Tips and Cooldown Implementation
The video begins with the host offering advice on creating a combat script in a game development environment, likely Roblox's Lua-based system. The first tip is to avoid using 'part.Touched' for hitboxes due to its vulnerability to manipulation. The second tip is to refrain from creating client-side combos to prevent exploits. The host then demonstrates how to implement a cooldown system for summoning abilities, using a variable 'cocoa cooldown' set at 0.7 seconds and a table for player cooldowns. The concept of 'always time' is introduced as the time elapsed since January 1, 1970, and is used to calculate the time passed since the last ability use. The script checks if the current time minus the last ability use time is greater than or equal to the cooldown, allowing the ability to be used again.
🎭 Setting Up Animation and Combat Script Basics
The host proceeds to guide viewers through setting up animations for a combat script, ensuring that animations are named in the correct order and placed in designated folders. A 'combat client' script is created, and a remote event is set up for combat commands. The script listens for mouse clicks and initiates a combo system using attributes to track the combo count. A function named 'combo changer' is implemented to increment and reset the combo count based on the maximum allowed combo size. The animations are tested to ensure they play correctly, and an issue with overlapping animations is addressed by introducing a cooldown attribute to prevent spamming.
🔄 Animation Tweaks and Cooldown Mechanic
The host discusses an issue with animation overlapping when the attack key (M1) is spammed and introduces a solution involving a 'character set attribute attacking' to prevent the script from running while an attack is in progress. The script is designed to stop once the current animation ends, as detected by the 'animation ended' event. The host also introduces a 'tweening' service to move the character's stand forward and backward, with adjustments made to ensure smooth transitions between animations. A delay is added to allow the player to stop pressing the attack key, and only then does the stand move backward.
💥 Adding Hitstun and Cooldown After Combo
The script is enhanced to include a hitstun effect after a combo sequence, with an attribute 'attacking' used to check if the character is in a hitstun state. If the character stops attacking, the stand moves backward. An 'else if' statement is added to handle the transition after the maximum combo is reached. A cooldown is introduced after the fifth combo, causing the script to wait for one second before continuing. The character's walk speed is also adjusted during this cooldown, and a humanoid variable is created to manage the character's speed during combat.
⚔️ Implementing Raycast Box for Precise Hitboxes
The host opts for a 'raycast box' over 'part.Touched' or 'magnitude' for more precise hitboxes. The process involves creating a hitbox using attachments named 'damage point' and starting the hitbox with a variable. The hit detection is managed through an event that triggers when the hitbox makes contact with a character. The hitbox is then stopped using a specific command. The host also explains how to make the hitbox ignore the player's character and provides a visual representation of what the hitbox will look like.
🎯 Fine-Tuning Hitboxes and Animation Sync
The host demonstrates how to create damage points for each body part involved in the animations and how to attach them to the character. A part table is created to reference the correct body part for each combo move. The hitbox is started using a module and the part table is indexed with the current combo number. An event is connected to handle hit detection, and damage is dealt to the enemy humanoid. The script is tested, and adjustments are made to ensure the hitbox stops correctly after the animation ends. The host also addresses a potential issue with Roblox failing to load assets and turns off the hitbox visualizer for a cleaner look.
🔚 Final Touches and Upcoming Tutorial Preview
The host wraps up the tutorial by turning off the hitbox visualizer and making the humanoid part invisible for aesthetics. The script is modified to reset the combo if the player stops attacking after a short period, mimicking a mechanic from the game YBA (Yugioh: Battle City). The host also comments out unnecessary print statements to clean up the script. The video concludes with a preview of the next tutorial, which will cover adding sound effects, stands, knockbacks, and possibly particles for the head effect.
Mindmap
Keywords
💡Hitbox
💡Cooldown
💡Combo
💡Animation Controller
💡Tweening
💡Raycast
💡Scripting
💡Attributes
💡Remote Event
💡Input Handling
💡Game Balancing
Highlights
Avoid using 'part.Touched' for hitboxes as it can be easily manipulated by experts to extend hitboxes.
Do not make combo systems client-sided to prevent infinite combos by resetting the combo.
Implementing a cooldown system for summoning to prevent spamming.
Using 'os.time()' to keep track of time passed for cooldowns.
Creating a 'cocoa_cooldown' variable for managing summoning cooldowns.
Using 'playerCooldowns' table to store individual player cooldowns.
Explanation of 'always_time' and its role in cooldown calculations.
Creating a combo system using attributes and a 'combo' attribute for tracking.
Introducing a function 'comboChanger' to manage combo progression.
Adding a cooldown to prevent animation overlapping during combo execution.
Utilizing 'tween service' for smooth stand movement during combat.
Creating hitboxes with 'raycast box' for precise combat interactions.
Using 'hitbox.onHit' event to handle damage and effects when a hit is detected.
Incorporate 'raycastParams' to ensure hitboxes ignore the player's own character.
Adding a mechanism to reset combos if the player stops attacking after a period.
Adjusting humanoid walk speed during combat for realistic movement.
Upcoming tutorial content will include sound effects, stand additions, knockbacks, and particle effects.
Transcripts
hello guys welcome to my juju series and
today we're gonna be making style combat
before i start this video i'm gonna give
you some tips um so the first step is do
not use parts part attached for the
hitbox i use i'm seeing a lot of
youtubers use part the touch for the
hitbox
never do that because
using partner touch and welding into our
character which means it's easily
explainable
and
that means if i'm i'm an expert i can
just extend the hitbox
and it'll still hit the
dummy on the server which sucks you
don't want that that's
really it doesn't feel and
my second tip is do not when you're
making a combo script like when you're
making a
combo system do not use combos in the
local script do not use commerce um
client-sided
not make the combo available in the
client because explorers can just
um infinite combo you by resetting the
combo every time okay that sucks
so
first of all i'm gonna add in the
cooldown for summoning and summoning
as you can see i don't found this
so let's add in the cooldown okay
so for our cooldown let's make a
variable called cocoa cooldown we're
going to make this 0.7 seconds
and let's add in a table for
the player cooldowns for the player that
that cooldown okay
and let's do something like this
clear cooldowns
and print locator
in the index um a close
west.time
okay so if you're wondering what always
the time is you don't know what else the
time is
always the time is the time that's
passed since
one january 1970. it returns in seconds
let's go right here so you may be
wondering how are we going to use this
for our cooldown so what we're going to
do is we save this oyster time
and we're going to subtract the current
time the current oyster time
with
our
clear cooldowns
character
right
and
there is um and the result will be
the time that's passed since we pressed
q
alright
now let's do this real quick let's add
in scripts
if
player cooldowns character if we have a
cooldown on if the cooldown is on
then
all right and then we're gonna check
some like this and then we're gonna do
some of this what if where's the time
the current oso time
subtracted with player cooldowns
character
is bigger or equals cooldown
then we're gonna remove our character
from the cooldown
table
equals no
else
oops else
return
else turn end
all right so let's say the o is the time
the current is the time is seven seconds
and then our player cooldowns character
is five seconds which means if we
subtract seven with five
and then we're going to get two the
number two is the time that's passed
since we used the summon function
then we're going to check if the summon
if the
two seconds is bigger or equals the
cooldown then
it's going to remove the character and
it's going to contain the script and
then let's do the same thing
for our club and function
right
let's test this out
see it works okay
the cooldown exists okay now
now we're gonna be making
the combat script let's close out of
this
so make sure to get your animation ready
i got my animation ready right here put
your animations inside of
the anim folder hold on let me rename
this to one
two three four five okay
make sure you've renamed your animations
to your combo order
and let's put this
inside of your stand hold on understand
storage stand
oops oh my god
put this inside of
the spam folder
and let's make a let's make a folder
called moose called make rename it to
moose since in a different video in the
future video we're gonna be putting
we're gonna be making moves at and we're
gonna be putting the local scripts
inside of this folder
and then let's rename this to
combat client
let's add a let's add a remote event you
know the drill
rename this to combat
combat yeah let's say this combat unless
adding a silver script script
combat script
all right
now let's do some of this you know the
drill game dot
get give me a service using the service
when you detect the inputs uh the inputs
remotely required storage for child
combat
service dot input again connect function
key typing
let's add in i've typed in first
and instead of key and
and instead of keto t code we're going
to do e dot user input type
because it was adam
dot user of the type
dot most one since we're gonna be
checking if the character clicks the
mouse or not
then the mode fires over
that's it we don't need to touch this
anymore
and
now we're gonna
um
do our server script
convert server
so for our combos we're gonna be
using um
attributes
okay but let's add
don't in a
edit event
click edit connect function
run the player here another character
added if the character is added
inside of the workspace
red connect function
put in our character uh parameter
character
so that's reset attribute is to create
an attribute or to add an attribute
putting the string name i'm going to
name this combo and the value just one
and then let's create a remote event
variable remote equals
game programmable storage wait for child
remote event alone
combat it's called command media
what dot on server event connect
function
player button player here
local character equals player dot
character
local stand equals character dot stand
local animation controller local
controller
controller
a cool standard animation controller
local standard parts then underscore
equals
dyna primary part we're going to be
we're making the variables right now
primary parts
and develop local build it will stand
dot fill
all right now let's make uh let's um add
in uh let's uh make the
animation variable
let's do this
local atoms equals stand dot atoms it's
called atom's regime
and then we're going to start with this
local
current animation current animal
equals
controller
load animation
and the anims
and we're gonna put in and we're gonna
put in
the index and it's gonna be our combo
since let's say
we're planting two times then our combo
is two which means we're going to play
the second animation the first pad to
make a combo after a variable go to
combo equals character gradually combo
get attribute gets to be asked where it
gets the value okay so that actually
resets the attribute anonymous combo
now that we've done this we're going to
make a function
to change the combo local function
combo changer
um
my uh put in our character and the congo
as a
render
and let's just move this if combo
is smaller than five five is my max
combo
if your maximum blue is four then put in
four or three and so on and so forth
then
character
set attribute
combo
combo
and we're gonna increase the combo by
one
and if the combo is five
okay the nice combo we're gonna reset
the combo back to one
like that's nice that's nice
okay change combo changer character
and combo
primary parts oh yeah yeah i
accidentally added an s
misspell oh yeah i forgot to leave the
animation my bad my bad
my bad guys my bad
my fault my fault
current and i'm play
there we go
all right the animations work
that's nice that's really nice okay
so
yeah that's cool that's really cool
and
but but uh the anime when you spam m1
the animation is overlapping so that's
why we're going to add in a cooldown
let's add in an attribute called
character set attribute attacking
then we're going to check if the
character is attacking or not local
attacking
both character gets rid of attacking
which is which gets the value
and if the character is attacking then
it's going to stop the script
okay and then
return end
all right so
hey once the current animation is
over right we're gonna select this
current animation
dot ended yeah i'm pretty sure it's
called um i'm pretty sure the event is
called let me find out nice call dot
stop my bad
dot stop
connect function so when your animation
is over
um it's gonna
set the attribute back to
set the attacking aspect back to nail
which destroys the attribute
all right
so in my preview series the combat
release i used task delay
and then the duration of my animation
instead of animation that stopped i
recently found out about this this is a
really cool mechanic oh i forgot to put
in the value
let's see if it's working again or not
right
let's see if this works i'm spamming
ammo right now yeah alright so now we're
gonna tween
the stand forward okay
so let's um add in
my twin service
so let's require my twin service module
game
cool choir game for replicated storage
dot printer this v2
i'm going to put this above the barrel
motor event
and let's
do somewhere i guess so yeah yeah okay
all right
or so it hides the
creative added uh event all right
actually let's make the twin info first
local info equals twin info dot new
the duration will be 0.13 seconds
okay and i'm not even you can change it
to whatever you want um for me i'm going
to change i'm going to put this 2.13
seconds go on and i'm done using
direction
using direction dot out
right
let's uh do something like this oh ts
create
let's put this
yeah let's put this below this ts
getting object the instance which is the
weld the inhale which is
info and the goal
we're gonna change the c1
to
to make the we're gonna change the
offset to make the stat in front of us
see frame dot new
zero zero one i think that's the right c
frame
all right
and then let's play
this animation i'm i'm in between not
anything my bad
all right
let's see if this twins will work okay
it works
now i'm gonna make it twin backwards
so turn it to the original position
so now we're gonna do something like
this
ps
getting object
weld
the info
and
the go
which is um
c one
c frame dot new we're gonna change this
to the original
stand summoning offset which is
uh which is two minus one and minus two
two minus one and minus two
let's play this play
right
let's play
all right right
it's understand
it's going to turn backwards but the
thing is when you spam click it's going
to be jittery i want it to be like yba
right when i keep on running when i
don't stop my morning the stance won't
be between backwards but when i stop m1
the stand will be twin backward
right
so to do this we're gonna need to give
um
the player
a chance
um to
m1 again
let's wait point five seconds i mean
point three seconds function using
tacitly you already know what times the
delay is
so it's going to give the player a
chance to m1 again right and it's
so the chance is 0.3 seconds you can
make this shortest shorter if you want
so
it's gonna check if the character is
still embodying or not by doing
something like this character
okay attribute
combo
minus one
minus one by why did i do the minus one
here well it's because the combo is
is always bigger i mean the get
attribute combo is always bigger than
the combo variable because
um the combo is the combo variable is
like the current combo and the
combo attribute is like the future combo
okay
so that's why we're gonna do minus one
it's character garage combo minus one
is still the same
as combo
that means that the character stopped
and wanting
then
so by doing this it's going to check if
the characters stop them wanting or not
if the character is
if the character is not emoting anymore
then it's gonna tween the stand
backwards but if it's still a morning
then the stand won't be tweened
backwards let's see
let's check
one two and then i stop and running and
then it's gonna get backwards but the
thing is if i do this
on the fifth combo three four five it's
not going to get pinned backwards the
fifth cambodian got twin back because
um
my combo is five it's gonna get reset to
one so one minus one equals equals zero
right and
zero is not the same as five since
my previous combo is five so that's why
we're gonna add an else if statement
else if combo is five
then it's gonna get twinned back
so let's see if this works
one two
three four five it's gonna get spin back
one two three i stop i'm running it's
gonna get to be back if i don't stop and
warning then it's not gonna get changed
back it's only gonna get twin back if i
stop my money i don't see any other
tutorials do this all right now that
this is done
we're gonna uh add in and like
so that there's a cooldown at the fifth
and one
to do this we're gonna do something like
this
if
combo equals equals five
then
task
dot wait
one so when my combo is five it's gonna
wait one second
and then it's gonna continue the script
and then let's change my human rate
speed
hold on let's add in let's make
and then let's change my walk speed to
five
so hold on hold on
let me add in my humor
variable let me add another unit
variable
low correction might
humanoid equals character
dot humanoid
so first of all let's save the unit walk
speed
and
old speed
equals
humanoid lock speed
vocal speed
right log speed so it's gonna see the
speed let's say my speed was already
seven
and then
i
wait one second and then it's gonna
return my speed back to seven instead of
sixteen
which is good okay
what's speed
equals
old speed
oh yeah i've got to change my lock speed
you know hold
on put and change your walk speed after
you do the old speed
after you um save the old speed
equals five you can change my lock speed
to five
and then the unlock should work
all right i spent my one
i'm spamming m1
and there's a cooldown
see
there's the gold on
after the fifth one which is good
so we've done the twinning the end leg
and the combo now we're gonna
do the hitbox which is
the fun part so for the hitbox we're not
gonna be using part.touch that sucks
nor magnitude that's pretty good but
we're going to be using
raycast box since i want my hitbox to be
way more precise
than magnitude
all right this is the rake acid box
therefore so this is how
um curricular box works so you create
the hitbox using the using attachments
and then renaming it to damage point
and to start the hitbox you need to
create a hitbox variable
right has hitbox.new you put in the part
that then of your hitbox that has the
damage points and then to start the
hitbox use hit start
okay so it'll look like this
and
for hit detection we're gonna there's an
event called the unhit there are two
parameters the hit and the humanoid
uh
you can do something like this yeah yeah
and then
you can stop the
stop the hitbox by using no hitbox hit
stop okay
and then you can make it ignore your
character by changing the raycast ramps
also if you don't know
what the
hitbox will be like it'll look like this
it's a pretty accurate box
okay so that's scripted now
let's put in the hitbox here okay box
box
box before
put this in
server storage and then i'm gonna make a
folder for modules
folder
since we're definitely gonna be using
what uh more than one module i can
say that for certain
so
like the tutorial we're gonna be making
the damage points so my animation combo
animation uses every single body part
that's why i'm gonna be
adding the damage points on every single
um arms on every single limbs
and then we're gonna
add in
the attachments
and then i'm gonna make it visible
visible
but that's it
and then rename it to
damage point
i'm gonna jump cut to when i've made all
of my damage points okay all right i'm
done with my damage points do not copy
my damage points with me i make this um
damage points
solely for my animation since we're not
gonna be using the same animations make
your damage points
um fit
to your animations not my animations do
not copy mine
okay go to your camera script and
require the
and now we're gonna create the hitbox
by doing something like this
locally box
equals
module.net remodel.new
and put in the part okay so
before we put in the part we need to
make a part table all right
while you're doing something like this
parts equals
so
in my animation
my first punch
uses
my right arm
so that's why
i'm gonna make my
um
first value stand
right arm
oh yeah putting
your stand back to its original position
back to its original place
service image
okay okay
let's switch
come on man
surf storage
surface storage there we go
right
i use the right leg
and
come on
stand
and right left left leg my back
right
right and then
left arm
left arm
let's check if it's true my fourth
animation uses
all right and right leg and it should it
should the five animation should be the
left arc okay
do this but use your
animations
body parts okay
i'm gonna copy this
so i made this in order
of the combo so we can just do something
like this
new
the parts parts table and then index it
with our combo
that's cool that's cool
let's start the combo and let's start
the
box
hitbox
it starts to start a box you use it
start
all right all right
now
there is an event called
bro what's up with this
oh my bad
this shouldn't be
what you know go hit box
local hitbox equals
module
three module i guess
cast more
row mod
module okay hitting modules.new
and the parts table
put in our an index
and exit using our combo
and let's add in an event called
hitbox.on head
connect function
there are two parameters the hit and the
humongo
we're gonna
make the hearing oh okay let's change it
to ehome instead of human
since
we already have a human uh variable
icham which means enemy humate by the
way like damage
i'm gonna make yeah i make it i'm gonna
make it do like 10 damage
seven damage okay that's fine
and
then we're gonna stop the script once
the animation once the animation is over
we're doing this
hitbox
hitbox
hit
box hit stop
do not put this below here by the way
since it uses task dot wait
uh if you put this below here then when
your combo is five it's gonna wait one
second before your right box will stop
okay
let's hope
this script works i hope this trick
works please work this one face words
work
it's been like 28 minutes
but i don't want to fix any errors
yo it works
look at this
it works yo
oh yeah oh yeah it is my character oh
yeah
so that's why we're going to be making
an economist by using raycast rams
okay
uh
local
local programs equals raycast programs
dot new
params.filtertype so we're gonna change
the filter type to blacklist
i just filter type.blacklist
and
we're gonna do
params dot
param dot filter descendant instances
equals our character so it's gonna
blacklist our character so it's gonna
ignore our picture okay
and we're gonna change the hitbox
rayguest params to our params cast
request rams equals price this should
work now
this will work
i hope
all right
let's see if this works
boom boom boom boom boom um the
animation is a bit slow at first because
it's loading in the animation
yo this is cool as well
this is really cool oh yeah wait wait do
you guys have the same problem with me
where roblox rio failed to load some
stuff sometimes
since this time um
my hat isn't loaded and my monkey face
isn't loaded
let's check oh yeah yeah it also isn't
loaded in the server i don't know why
he's doing this oh yeah let me turn off
uh
turn off damage points visibility the
attachment visibility
since it's distracting also why do i
have two torsos that's so stupid let's
delete this you only need one torso
and let me turn off the visual the
visibility real quick all right so now
we're gonna do two things we're gonna
turn off the hitbox visualizer the red
the red lines
and we're gonna make our humanoid part
invisible since it's visible right now
as you can see hold on it looks really
ugly
it looks really janky
but first let's turn out the visualizer
it's really simple let's do something
like this
dot visualizer equal sounds and then for
the
summon script
do something like this
where is my okay there it is
and check if
the part is not our stand primary part
or part then it's gonna change the
transparency to zero
all right let me test it out
this works woohoo
let's see for my let's see my hammers
yeah the red lines is off
that's nice
all right now i want to remove these
prints because it's so annoying so just
click on these prints and then comment
this out okay comment down
that's all i need to do and then the
second thing i want to do is i want to
make it so my combo can reset if i stop
and running after a while
so
to that we're going to do something like
this
go to our combo changer function
in here
do something like this
task dot delay
we're gonna
um put one once again
function
we're gonna check
if
character
get attribute
combo
-1
is the same as combo
then
it's gonna change the attribute
back to one
combo
one so
if my combo is smaller than five i'm
going to increase my combo by one and
i'm going to wait one second
using task totally and check if
my
character combo isn't increasing
so if my combo is not increasing then
it's gonna reset the combo back to one
like yba since i'm basing the tutorial
on yb i really like yba
this
one two three i'll wait one second
then i can do one two three again so
this is it for my video the next video
will be about finishing the combat i'm
gonna add in sound effects i'm gonna add
in stands adding knockbacks
and i'm gonna be um
i might be adding particles for the head
effect you know thank you for watching
and i'll see you next time goodbye
Parcourir plus de vidéos associées
![](https://i.ytimg.com/vi/ZBL-OV6eMm8/hq720.jpg)
How to make a Roblox JOJO game #5 | Abilities
![](https://i.ytimg.com/vi/ELCQbRvDl0U/hq720.jpg)
How to make a Roblox JOJO game #1 | Making Stand Summoning
![](https://i.ytimg.com/vi/BmfH5OH__GA/hq720.jpg)
【Unityゲーム作成講座2】アドベンチャーゲームの作り方#12(サウンドシステム①)【ゆっくり解説】
![](https://i.ytimg.com/vi/VE_bkPrrZdE/hq720.jpg)
Unity 2D CHECKPOINTS Tutorial (Simple and Easy!) | Unity 2D Platformer Tutorial #9
![](https://i.ytimg.com/vi/u7Tku3_RGPs/hq720.jpg)
Microsoft PowerPoint Tutorial - Beginners Level 1
![](https://i.ytimg.com/vi/SgmNxE9lWcY/hq720.jpg)
Learn CSS Animations In 20 Minutes - For Beginners
5.0 / 5 (0 votes)