Skip to content
HotWeaponAccuracyOfFireComponent

Gameplay / HotWeaponAccuracyOfFireComponent

HotWeaponAccuracyOfFireComponent Class ​

Hot Weapon shoot precision component

Weapon shooting accuracy refers to the accuracy and precision of the weapon hitting the target during shooting. It describes the stability and predictability of the ballistic path when the weapon is in use, as well as the hit rate and accuracy of shoot. Control the divergence of bullets when Hot Weapon is launched. It is the minimum divergence by default

The shoot accuracy of weapons can be described by a simple analogy: it is like the shooting accuracy when you play basketball.

When you shoot, you want the basketball to enter the basket accurately, rather than deviate from the target. This is the accuracy of shooting. In weapon shooting, accuracy refers to the ability of the bullets fired by the weapon to accurately hit the target, rather than flying randomly in other directions.

Usage example: create a script named "HotWeaponAofSample1", place it in the object manager, open the script, enter the following code to save, and run the game. The code is as follows:

ts
@Component
export default class HotWeaponAofSample1 extends Script {
    protected onStart(): void {
        // structure
        const hotWeapon = this.gameObject as HotWeapon;

        if (SystemUtil.isServer()) {
            hotWeapon.accuracyOfFireEnable = true;
            // The maximum value of bullet offset half angle that affects shooting accuracy (range Min~88)
            hotWeapon.accuracyOfFireComponent.maxDispersionHalfAngle = 4;
            // The minimum value of offset half angle of bullet that affects shoot accuracy (range 0~Max)
            hotWeapon.accuracyOfFireComponent.minDispersionHalfAngle = 0.01;
            // Default offset half angle of bullet that affects shoot accuracy (range Min~Max)
            hotWeapon.accuracyOfFireComponent.defaultDispersionHalfAngle = 1;
            // The expansion speed per second of the bullet offset half angle that affects shooting accuracy (range 0~88)
            hotWeapon.accuracyOfFireComponent.dispersionHalfAngleIncreaseSpeed = 5;
            // The contraction speed per second (range 0~88) of bullet offset half angle that affects shooting accuracy
            hotWeapon.accuracyOfFireComponent.dispersionHalfAngleDecreaseSpeed = 10;
            // Each firing expansion value of offset half angle of bullet that affects shoot accuracy (range 0~88)
            hotWeapon.accuracyOfFireComponent.dispersionHalfAngleIncreasePerShot = 1;
        } else if (SystemUtil.isClient()) {
            hotWeapon.accuracyOfFireComponent.onCurrentDispersionChangedClient.add(() => { console.log("accuracyOfFireComponent.onCurrentDispersionChangedClient") });
        }
    }
}
@Component
export default class HotWeaponAofSample1 extends Script {
    protected onStart(): void {
        // structure
        const hotWeapon = this.gameObject as HotWeapon;

        if (SystemUtil.isServer()) {
            hotWeapon.accuracyOfFireEnable = true;
            // The maximum value of bullet offset half angle that affects shooting accuracy (range Min~88)
            hotWeapon.accuracyOfFireComponent.maxDispersionHalfAngle = 4;
            // The minimum value of offset half angle of bullet that affects shoot accuracy (range 0~Max)
            hotWeapon.accuracyOfFireComponent.minDispersionHalfAngle = 0.01;
            // Default offset half angle of bullet that affects shoot accuracy (range Min~Max)
            hotWeapon.accuracyOfFireComponent.defaultDispersionHalfAngle = 1;
            // The expansion speed per second of the bullet offset half angle that affects shooting accuracy (range 0~88)
            hotWeapon.accuracyOfFireComponent.dispersionHalfAngleIncreaseSpeed = 5;
            // The contraction speed per second (range 0~88) of bullet offset half angle that affects shooting accuracy
            hotWeapon.accuracyOfFireComponent.dispersionHalfAngleDecreaseSpeed = 10;
            // Each firing expansion value of offset half angle of bullet that affects shoot accuracy (range 0~88)
            hotWeapon.accuracyOfFireComponent.dispersionHalfAngleIncreasePerShot = 1;
        } else if (SystemUtil.isClient()) {
            hotWeapon.accuracyOfFireComponent.onCurrentDispersionChangedClient.add(() => { console.log("accuracyOfFireComponent.onCurrentDispersionChangedClient") });
        }
    }
}

Table of contents ​

Properties ​

onCurrentDispersionChange: MulticastDelegateInterface<() => void>
The binding function is executed when the actual shoot accuracy value of the client changes.

Accessors ​

defaultDispersionHalfAngle(): number other
Get the default radius of the bullet's random divergence range.
dispersionHalfAngleDecreaseSpeed(): number other
Obtain the contraction speed of the random divergence radius of the bullet.
dispersionHalfAngleIncreasePerShot(): number other
Obtain the expansion value of the random divergence radius of the bullet after each shot.
dispersionHalfAngleIncreaseSpeed(): number other
Obtain the expansion speed of the random divergence radius of the bullet.
maxDispersionHalfAngle(): number other
Obtain the maximum radius of the random divergence range of bullets.
minDispersionHalfAngle(): number other
Obtain the minimum radius of the random divergence range of bullets.

Methods ​

getCurrentDispersionHalfAngle(): number other
Obtain the actual value of the random divergence radius of the current bullet
getRandomShootDir(shootDir: Vector): Vector other
Obtain the random shoot unit vector (in screen angle) in the conical space defined according to the shoot accuracy angle range
getTargetDispersionHalfAngle(): number other
Set the actual value of the radius of the random divergence range of target bullets

Properties ​

onCurrentDispersionChange ​

• onCurrentDispersionChange: MulticastDelegateInterface<() => void>

The binding function is executed when the actual shoot accuracy value of the client changes.

Accessors ​

defaultDispersionHalfAngle ​

• get defaultDispersionHalfAngle(): number other

• set defaultDispersionHalfAngle(NewValue): void other

Get the default radius of the bullet's random divergence range.

Returns ​

numberCircular range radius value

Sets the default radius of the bullet's random divergence range.

Precautions

Only the server can be called before equipping the hot weapon, and both ends can be called after equipping

Parameters ​

NewValue numberNew circular range radius value
default:
range: type: floating-point number

dispersionHalfAngleDecreaseSpeed ​

• get dispersionHalfAngleDecreaseSpeed(): number other

• set dispersionHalfAngleDecreaseSpeed(NewValue): void other

Obtain the contraction speed of the random divergence radius of the bullet.

Returns ​

numberCircular range radius changes per second

Set the contraction speed of the random divergence radius of the bullet.

Precautions

Only the server can be called before equipping the hot weapon, and both ends can be called after equipping

Parameters ​

NewValue numberThe radius of the newly set circular range changes per second. default:

dispersionHalfAngleIncreasePerShot ​

• get dispersionHalfAngleIncreasePerShot(): number other

• set dispersionHalfAngleIncreasePerShot(NewValue): void other

Obtain the expansion value of the random divergence radius of the bullet after each shot.

Returns ​

numberIncremental radius of circular range

Set the expansion value of the radius of the bullet's random divergence range after each shoot.

Precautions

Only the server can be called before equipping the hot weapon, and both ends can be called after equipping

Parameters ​

NewValue numberNew circular range radius increment default:

dispersionHalfAngleIncreaseSpeed ​

• get dispersionHalfAngleIncreaseSpeed(): number other

• set dispersionHalfAngleIncreaseSpeed(NewValue): void other

Obtain the expansion speed of the random divergence radius of the bullet.

Returns ​

numberCircular range radius changes per second

Set the expansion speed of the random divergence radius of the bullet.

Precautions

Only the server can be called before equipping the hot weapon, and both ends can be called after equipping

Parameters ​

NewValue numberThe radius of the newly set circular range changes per second. default:

maxDispersionHalfAngle ​

• get maxDispersionHalfAngle(): number other

• set maxDispersionHalfAngle(NewValue): void other

Obtain the maximum radius of the random divergence range of bullets.

Returns ​

numberCircular range radius value

Set the maximum radius for the random divergence range of bullets.

Precautions

Only the server can be called before equipping the hot weapon, and both ends can be called after equipping

Parameters ​

NewValue numberThe newly set radius value for the circular range is default:

minDispersionHalfAngle ​

• get minDispersionHalfAngle(): number other

• set minDispersionHalfAngle(NewValue): void other

Obtain the minimum radius of the random divergence range of bullets.

Returns ​

numberCircular range radius value

Set the minimum radius for the random divergence range of bullets.

Precautions

Only the server can be called before equipping the hot weapon, and both ends can be called after equipping

Parameters ​

NewValue numberThe newly set radius value for the circular range is default:

Methods ​

getCurrentDispersionHalfAngle ​

• getCurrentDispersionHalfAngle(): number other

Obtain the actual value of the random divergence radius of the current bullet

Returns ​

numberCurrent bullet divergence range radius

getRandomShootDir ​

• getRandomShootDir(shootDir): Vector other

Obtain the random shoot unit vector (in screen angle) in the conical space defined according to the shoot accuracy angle range

Parameters ​

shootDir VectorInitial bullet flight direction without deviation default:

Returns ​

VectorRandom screen offset coordinates

Generate bullets at the center of the screen and apply this vector directly

When generate bullets at the preset position, it is necessary to determine the impact point by the preset position+the vector+the maximum shoot distance, and then calculate the flight direction of bullets in the actual three-dimensional space


getTargetDispersionHalfAngle ​

• getTargetDispersionHalfAngle(): number other

Set the actual value of the radius of the random divergence range of target bullets

Returns ​

numberTarget bullet divergence radius