Více Tipů a targetů
Jeden nástroj může mít několik Tipů a jeden Tip může mít několik současných targetů.
Každý Tip má samostatné enabled, mask a kapacitu. Relationship vždy patří právě jednomu Tipu a jednomu targetu. Existující kanály na stejném penetratoru musí být směrově slučitelné; více Tipů neznamená automatické povolení nezávislých os.
Více targetů na jednom Tipu#
tip = jolt_penetrator_tip(penetrator, {
local_position: { x: 0, y: 0, z: -0.4 },
local_axis: { x: 0, y: 0, z: -1 },
capture_model: 2,
max_simultaneous_penetrations: 3,
max_insertion: 0.6
});
// Read every connection, not just the first one.
var relationships = tip.get_relationships();
for (var i = 0; i < array_length(relationships); ++i) {
var snapshot = relationships[i].get_snapshot();
if (is_struct(snapshot)) {
show_debug_message(string(snapshot.target_handle) + ": " + string(snapshot.depth));
}
}Každý target samostatně registrujte a vhodně rozmístěte. Každé spojení má vlastní vstupní bod, odpor a efektivní max_depth. Odpor více targetů působí společně. Samotné zvýšení kapacity nezaručuje průnik přes první target ani dostatečnou délku nástroje.
Dva hroty na jednom čele#
var fork = jolt_box_create_dynamic(0, 0, 1.6, 0.10, 0.10, 0.80, { mass: 1 });
var tips = [];
for (var side = -1; side <= 1; side += 2) {
array_push(tips, jolt_penetrator_tip(fork, {
local_position: { x: side * 0.03, y: 0, z: -0.4 },
local_axis: { x: 0, y: 0, z: -1 },
capture_model: 2
}));
}Každý vrácený Tip ověřte přes is_struct. Dva body na čele plného Boxu ilustrují více logických hrotů; samy nevyříznou tvar vidlice do collideru. Kolizní geometrie musí odpovídat zamýšlenému nástroji a podporovaným tvarům.
Filtrování kategorií#
// Keep the other material settings in your own full configuration.
jolt_penetration_target(wood, { category_bits: 1, forward_force: 5, backward_force: 10 });
jolt_penetration_target(foam, { category_bits: 2, forward_force: 1, backward_force: 2 });
// Configure only while the Tip is free and not rearming.
tip.configure({ mask: 1 | 2 });Category mask funguje navíc ke kolizním vrstvám a group filtrům. Pokud pár nemůže běžně kolidovat, penetrace nepřepíše vaši kolizní politiku. Prázdný průnik mask vrátí MaskMismatch. IncompatibleChannel označuje neslučitelnou osu; IncompatibleConstraint konflikt s existujícím uživatelským constraintem penetratoru.