Hey Guys , as you all know Blender doesn’t support sprites full control , so I made this script to do the job.
all you have to do is setting the properties, and connect the script to an always sensor .
blend file attached.
#report for bugs please.
#Credit if used please ^^
#Screen Shot and instructions
2 Platformer games are presented in the demo .
here is the Script :
############################### Advanced sprites by Zero
#
# Create properties: * means you must not touch it
# spr_name (string) = Your Sprite Name
# spr_loop (bool) = If you want your sprite to loop
# spr_frame(integer) = Your Sprite's Frame
# *spr_framer(float) = 0
# spr_speed(float) = 1 means your game's FPS (30 frames/sec)
# *spr_old(string) = "" <<<< leave this empty
#
# All your sprites shall be named ######.0 , ######.01 , ####.02 (Name.FrameNumber)
# You should make all your sprites Invisible before the game begin
###############################
#initialization
import bge
def spriter():
cont = bge.logic.getCurrentController()
own = cont.owner
scene= bge.logic.getCurrentScene()
Sobjects = scene.objects
#Sprite Attributes fix and update
sprite_list = []
if own["spr_speed"] > 1:
own["spr_speed"] = 1
elif own["spr_speed"] < 0 :
own["spr_speed"] = 0
#Get sprite Objects
for i in scene.objects:
if i.name[:(len(own["spr_name"])+1)]==own["spr_name"]+".":
sprite_list.append(i.name)
sprite_list.sort()
#Replaces the Sprites
if (own["spr_name"] != own["spr_old"]) and (own["spr_old"]) !="":
own["spr_frame"] = 0
own["spr_frame"] = 0
sprite_list=[]
for i in scene.objects:
if i.name[:(len(own["spr_name"])+1)]==own["spr_name"]+".":
sprite_list.append(i.name)
sprite_list.sort()
for i in Sobjects:
if i.name[:(len(own["spr_old"])+1)]==own["spr_old"]+".":
i.visible=False
#animating
for name in sprite_list:
Sobjects[name].visible =( (str(Sobjects[name]) == str(sprite_list[own["spr_frame"]])) )
if (own["spr_framer"] > 1):
own["spr_framer"] = 0
own["spr_frame"] += 1
if own["spr_loop"] == True:
if own["spr_frame"] > len(sprite_list)-1:
own["spr_frame"] = 0
else :
if own["spr_frame"] > len(sprite_list)-1:
own["spr_frame"] = len(sprite_list)-1
own["spr_framer"] += own["spr_speed"]
own["spr_old"] = own["spr_name"]
#Function call
spriter()
Attachments
Advanced Sprites.blend (660 KB)Advanced Sprites updated.blend (758 KB)