-------------------------------------------------------------------------------- -- Handler.......... : onWeaponShoot -- Author........... : -- Description...... : -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- function FPSCamera.onWeaponShoot ( ) -------------------------------------------------------------------------------- local ammo = this.nAmmo ( ) if ( ammo > 0 ) then this.nDstWeaponBackFactor ( 1 ) this.nAmmo ( ammo - 1 ) user.sendEvent ( application.getCurrentUser ( ), "FPSMainHUD", "onAmmoSetValue", ammo - 1 ) -- -- local o = this.getObject ( ) local s = object.getScene ( o ) local w = this.hWeapon ( ) if ( s ~= nil and w ~= nil ) then local bullet = scene.createRuntimeObject ( s, "Weapon0Bullet" ) if ( bullet ~= nil ) then local srcX, srcY, srcZ = object.getTranslation ( w, object.kGlobalSpace ) local dirX, dirY, dirZ = object.getDirection ( w, object.kGlobalSpace ) local dstX, dstY, dstZ = object.getDirection ( o, object.kGlobalSpace ) local camX, camY, camZ = object.getTranslation ( o, object.kGlobalSpace ) dstX, dstY, dstZ = math.vectorScale ( dstX, dstY, dstZ, 100 ) dstX, dstY, dstZ = math.vectorAdd ( camX, camY, camZ, dstX, dstY, dstZ ) dirX, dirY, dirZ = math.vectorScale ( dirX, dirY, dirZ, 2 ) srcX, srcY, srcZ = math.vectorAdd ( srcX, srcY, srcZ, dirX, dirY, dirZ ) local oYx, oYy, oYz = object.getYAxis ( o, object.kGlobalSpace ) oYx, oYy, oYz = math.vectorScale ( oYx, oYy, oYz, 0.1 ) srcX, srcY, srcZ = math.vectorAdd ( srcX, srcY, srcZ, oYx, oYy, oYz ) object.sendEvent ( bullet, "Weapon0Bullet", "onSetup", srcX, srcY, srcZ, dstX, dstY, dstZ ) object.sendEvent ( w, "Weapon0", "onRotateHelix" ) sound.stop ( o, 0 ) sound.play ( o, 0, 1, false, 1 ) end end end -------------------------------------------------------------------------------- end --------------------------------------------------------------------------------