Sorry your browser is not supported!

You are using an outdated browser that does not support modern web technologies, in order to use this site please update to a new browser.

Browsers supported include Chrome, FireFox, Safari, Opera, Internet Explorer 10+ or Microsoft Edge.

DarkBASIC Professional Discussion / Universal_ FUNCTIONS

Author
Message
DARKBASIC PRO 3d WORLD EDITOR
14
Years of Service
User Offline
Joined: 2nd May 2012
Location:
Posted: 13th May 2012 00:40
I am currently building a Universal FUNCTION LIBRARY... One of the functions I am working on is
Universal_MoveCharacter(Player,ObjectFile$,SCX#,SCY#,SCZ#,MaxObjectLimit,PlayerCycle,passgravity,playerspeed#)

and what it does is load object and responds to arrow keys in the same function!! Theres a lot more I can do but I just needed some help on this...

Note: Where it says YOUR MODEL FILE HERE, means to put that Animated Object file there.. like its name is "car.x" in place of YOUR MODEL FILE HERE.. (Believe me it was necessary lol)

sync on

player=1

do
PlayerCycle=Universal_MoveCharacter(Player,YOUR MODEL FILE HERE,300.0,300.0,300.0,5000,PlayerCycle,passgravity,playerspeed#)
sync
loop

function Universal_MoveCharacter(Player,ObjectFile$,SCX#,SCY#,SCZ#,MaxObjectLimit,PlayerCycle,passgravity,playerspeed#)
count=PlayerCycle

` MaxObjectLimit - (integer) The maximum number of objects in a world


if count=0
load object ObjectFile$, Player
set object speed Player,30
scale object Player,SCX#,SCY#,SCZ#
set object ambience Player,100
set object Player,1,0,1,1,1,1
endif

` Walks
if upkey()=0 then anim=0
if upkey()=1 then anim=1



select anim
case 0
set object frame Player,0
stop object Player
endcase
case 1

if object playing(Player)=0 then play object Player,1,total object frames(Player)-1
oldx#=object position x(Player)
oldy#=object position y(Player)
oldz#=object position z(Player)


px#=newxvalue(object position x(Player),wrapvalue(0+object angle y(Player)),playerspeed#)
pz#=newzvalue(object position z(Player),wrapvalue(0+object angle y(Player)),playerspeed#)
py#=object position y(Player)
position object Player,px#,py#,pz#

for k=1 to MaxObjectLimit
if object exist(k)=1
if object collision(Player,k)=1 and player<>k
position object Player,oldx#,oldy#,oldz#
endif
endif
next k
endcase

case 2
endcase

case 3
endcase
case default
endcase
endselect








` Gravity
oldy#=object position y(player)



if passgravity=0 then position object player,object position x(player), object position y(player)-0.69,object position z(player)
if matrix exist(1)=1 then y#=get ground height(1,object position x(player),object position z(player))
if object position y(player)<y# then position object player,object position x(player),y#,object position z(player)


` Keeps player on platform once falling on it

for i=1 to MaxObjectLimit
if Player<>i and object exist(i)=1
if object collision(player,i)=1
position object player,object position x(player),oldy#,object position z(player)
endif
endif
next i




` Handles Rotation
if rightkey()=1
yrotate object Player,object angle y(Player)+3
for b=9 to 8+bullets
if object exist(b)=1
yrotate object b,object angle y(b)+3
`fix object pivot b
endif
next b
endif

if leftkey()=1
yrotate object Player,object angle y(Player)-3
for b=9 to 8+bullets
if object exist(b)=1
yrotate object b,object angle y(b)-3
`fix object pivot b
endif
next b
endif

` Camera Follows Player
set camera to follow 0, object position x(Player),object position y(Player),object position z(Player),Object angle y(Player)-180,10,5,40,1


count=count+1
PlayerCycle=count
endfunction PlayerCycle

- Infinity is Simplicity -
Kezzla
17
Years of Service
User Offline
Joined: 21st Aug 2008
Location: Where beer does flow and men chunder
Posted: 13th May 2012 16:14 Edited at: 13th May 2012 16:24
good start

try

adjust camera position if you want to see your player model.
this does practically the same thing.
collision and gravity are best handled by independant dlls. eg sparkies collision and dark physics(or a decrease y plane until collision command).
like I said though, good start. it is good to experiment.

try to make functions for more specific tasks. player move funtions can rely upon collision data, can be tied to a matrix,terrain or blitzterrain, or flat planed.

general functions/subroutines I find useful are things like
tie camera to object
tie object to object
tie sound to object
tie light to object
make random noise texture
ground camera on matrix/terrain
wasd_mouselook_via_object
etc. just some ideas.

Sometimes I like to use words out of contents

Login to post a reply

Server time is: 2026-07-22 00:35:16
Your offset time is: 2026-07-22 00:35:16