He attacks me, but it's boring

Blitz3D Forums/Blitz3D Programming/He attacks me, but it's boring

semar(Posted 2009) [#1]
All,
I'm looking for a convincent way to show an attack from a zombie.

I have the following code, but I find that the zombie does not scare really.

I need something else to add to the scene. What would you do to make it more realistic/entertaining ?

The first idea that comes, would be using some blood splatting here and there, to attach to the camera, when the player is attacked. How would you do that ? Using a sprite ?

Suggestions are more than welcome.

Graphics3D 1024,768,0,2

Const Z_IDLE = 11
Const Z_IDLE2 = 12
Const Z_ATTACK = 9

Global current_action = 0

Global type_player = 1
Global type_ground = 2
Global type_pivot = 3
Global type_zombie = 4

Type t_joint
	Field entity
	Field cube
End Type
Global joint.t_joint




sc# = .06

Global zombie = LoadAnimMesh("..\models\zombie\zombie.b3d")
ScaleEntity zombie,sc,sc,sc
PositionEntity zombie,0,0,6


Global player=CreatePivot()
PositionEntity player,0,1,0
TurnEntity player,0,0,0
EntityRadius player,.3



camera=CreateCamera(player )
PositionEntity camera,0,.7,0
CameraRange camera,.1,200
CameraZoom camera,2
EntityParent camera,player



;EntityBox collpivot,EntityX(collpivot),EntityY(collpivot),EntityZ(collpivot),3,3,3



Global plane = CreatePlane()
PositionEntity plane,0,0,0
EntityColor plane,0,0,255
EntityAlpha plane,.3



;tex = CreateTexture(32,32,4)
;SetBuffer TextureBuffer(tex)
;ClsColor 0,0,0
;Cls
;Color 0,255,0
;Rect 0,0,32,32,False
;SetBuffer BackBuffer()
;EntityTexture plane,tex

EntityType zombie,type_zombie

EntityType plane,type_ground
EntityType player,type_player
EntityType plane,type_ground

Collisions type_player,type_ground,2,2
Collisions type_pivot,type_zombie,2,2
Collisions type_player,type_zombie,2,2


extractZombieAnimation()


sp#=.08
gs#=.008
ey#=EntityY(player)

;scanMesh(zombie)
;createcubes()

While Not KeyDown(1)

	yv#=EntityY(player)-ey
	ey=EntityY(player)
	
	If KeyHit(57) yv=.1

	MoveEntity player,0,yv- gs#,0

	If KeyDown(30) TurnEntity camera,-2,0,0
	If KeyDown(44) TurnEntity camera,+2,0,0
	
	If KeyDown(203) TurnEntity player,0,2,0
	If KeyDown(205) TurnEntity player,0,-2,0
	
	If (KeyDown(42)) Or (KeyDown(54)) Then
		If KeyDown(200) MoveEntity player,0,0,sp*2
		If KeyDown(208) MoveEntity player,0,0,-sp*2
	Else
		If KeyDown(200) MoveEntity player,0,0,sp
		If KeyDown(208) MoveEntity player,0,0,-sp
	EndIf



	UpdateWorld
	RenderWorld

	Text 0,0,EntityDistance (player,zombie)
	Text 0,10,EntityY(player)
	
	test_distance()

	Flip

Wend




End



;==========================================
Function test_distance()
;==========================================

If EntityDistance (player,zombie) < 1 Then
	;zombie_action(zombie,Z_ATTACK)
	zombie_action(zombie,Rand(8,10))

Else
	zombie_action(zombie,Z_IDLE)
EndIf


End Function

;==========================================
Function zombie_action(aZombie,action)
;==========================================
If action = current_action Then Return

If Animating(zombie) Then Return

current_action = action
animate_zombie(aZombie,action)

End Function

;==========================================
Function animate_zombie(aZombie,action)
;==========================================
asp# = .3
Animate aZombie,3,asp,action
;Animate aZombie,2,.2,action


End Function

;============================================
Function extractZombieAnimation()
;============================================
;
ExtractAnimSeq( zombie,2,20) ;	1	Walk cycle 1
ExtractAnimSeq( zombie,22,36);	2	Walk Cycle 2
ExtractAnimSeq( zombie,38,47);	3	Zombie being Attacked 1
ExtractAnimSeq( zombie,48,57);	4	Zombie being Attacked 2
ExtractAnimSeq( zombie,59,75);	5	Blown away onto his back
ExtractAnimSeq( zombie,78,88);	6	Still lying down And twitching (OFFSET To where he landed)
ExtractAnimSeq( zombie,91,103);	7	Die And fall forwards
ExtractAnimSeq( zombie,106,115);8	Kick Attack
ExtractAnimSeq( zombie,117,128);9	Punch/Grab Attack
ExtractAnimSeq( zombie,129,136);10	Head Butt :-)
ExtractAnimSeq( zombie,137,169);11	Idle 1
ExtractAnimSeq( zombie,170,200);12	Idle 2

ExtractAnimSeq( zombie,s,e )

End Function

;========================================
Function scanMesh(mesh)
;========================================



If CountChildren(mesh) > 0 
	
	For index = 1 To CountChildren(mesh)
		;EntityType child,type_ground
		child = GetChild (mesh,index)
		DebugLog.Print EntityName$(mesh) + "-->" + EntityName$(child)
		joint.t_joint = New t_joint
		joint\entity = child
		scanMesh(child)
	Next
	
	
EndIf

End Function
;========================================
Function createcubes()
;========================================

For joint.t_joint = Each t_joint
	cube = CreateCube(joint\entity)
	EntityColor cube,Rand(1,255),Rand(1,255),Rand(1,255)
Next

End Function



GIB3D(Posted 2009) [#2]
Well you could simply yell into a microphone for a zombie sound, like this http://www.youtube.com/watch?v=oKRU-xpC_IU

Or you could yell something, then reverse the sound http://www.youtube.com/watch?v=LXuR41eisnM&feature=related


skidracer(Posted 2009) [#3]
I would turn the light down so you can hardly see anything, flash it really bright every now and then then spend a week making sound effects and ambient background. For zombies you may also want to put some random noise into their animation time, I notice in the movies zombies typically do random sporadic stuff which would be fun to experiment with using animation time line.

This is a Java (refresh rate broken in chrome?) zombie game we made once (mark sibly has green shirt).

http://nullprefix.appspot.com/zip/agpudWxscHJlZml4cg8LEghHcmVldGluZxi6Fww/index.html