| Home Page | Recent Changes

XTra KrazzY/KActorSound

Actor >> KActor >> KActorSound

This custom class adds Sounds and Dynamic Volumes to KActors.

You can modify the code but explain it first with double slashes (//)

Intro

Hello... I'm XTra KrazzY and I found out that KActors never make any sounds, even if you try and configure them in the "KActor" impactsounds...

It took me a couple of minutes to realize that it was hidden in the xPawn Ragdoll impact sounds code. So I took it a bit further and it took me a couple of HOURS to finish and compile my newlyborn invention: Dynamic Volume.

When a KActor hits something it makes a strong sound... even if the impactVel's (a vector that controlls the impact velocity) vector size was small, so I decided to make a new code that will also control the volume based on the impact velocity.

Disclaimer

You may use my code as you wish.

Code

//=========================================
// Dynamic Volume Kactors 
// (C) Copyrights to XTra Krazzy 2004
//=========================================
class KActorSound extends KActor;

var(KActorSounds) array<sound>      HitImpactSounds;
var(KActorSounds) float         HitImpactSoundInterval;
var transient float         HitLastSoundTime;

var string HitOverride;

//You can change the volume values...
event KImpact(actor other, vector pos, vector impactVel, vector impactNorm)
{

    local int numSounds, soundNum;
    local float impactVelSize;

    numSounds = HitImpactSounds.Length;

    //log("Impact Velocity :"$VSize(impactVel));

    impactVelSize = VSize(impactVel);

    //log("the var: "$impactvelsize);

    if(numSounds > 0 && Level.TimeSeconds > HitLastSoundTime + HitImpactSoundInterval)
    {
        soundNum = Rand(numSounds);
        //Log("Play Sound:"$soundNum);
        if(impactVelSize > 0 && impactVelSize < 100)
        {
        PlaySound(HitImpactSounds[soundNum], SLOT_Pain, 0.5);
        }
        if(impactVelSize >= 100 && impactvelsize < 300)
        {
        PlaySound(HitImpactSounds[soundNum], SLOT_Pain, 1);
        }
        if(impactVelSize >= 300 && impactVelSize < 600)
        {
        PlaySound(HitImpactSounds[soundNum], SLOT_Pain, 2.5);
        }
        if(impactVelSize >= 600 && impactVelSize < 1000)
        {
        PlaySound(HitImpactSounds[soundNum], SLOT_Pain, 5);
        }
        if(impactVelSize >= 1000 && impactVelSize < 3000)
        {
        PlaySound(HitImpactSounds[soundNum], SLOT_Pain, 10);
        }
        if(impactVelSize >= 3000)
        {
        PlaySound(HitImpactSounds[soundNum], SLOT_Pain, 20);
        }
        HitLastSoundTime = Level.TimeSeconds;
    }
}

defaultproperties
{

    Begin Object Class=KarmaParams Name=KarmaParams0
        
        KStartEnabled=True
        KImpactThreshold=0
        bHighDetailOnly=False
        bKAllowRotate=True
        KFriction=0.2
        KRestitution=0.5
        KMass=0.5
        bClientOnly=False
        Name="KarmaParams0"
   
    End Object
    KParams=KarmaParams'KarmaParams0'


}

Comments?

Right here:

XTra KrazzY it sux, can't believe i made this piece of cr*p that long ago...


Category Custom Class

The Unreal Engine Documentation Site

Wiki Community

Topic Categories

Recent Changes

Offline Wiki

Unreal Engine

Console Commands

Terminology

FAQs

Help Desk

Mapping Topics

Mapping Lessons

UnrealEd Interface

UnrealScript Topics

UnrealScript Lessons

Making Mods

Class Tree

Modeling Topics

Chongqing Page

Log In