Advance Tree Chopper makes Unity terrain trees actually choppable, without giving up the performance.
When the player walks near a terrain tree, it is swapped for your own interactive stand-in prefab: a real GameObject with a collider that your combat or interaction system can hit. Walk away and it returns to being a cheap terrain tree. Chop a stand-in down and that location stays chopped — through the rest of the session and across restarts. Turn on regrowth and it grows back after a delay, turning your terrain into a renewable resource.
Key features
- Proximity stand-in swapping — terrain trees become interactive prefabs in range and revert outside it, with a hysteresis band so trees never flicker at the boundary. Distance work runs in a Burst-compiled job, on a configurable tick interval.
- Chop any way you want — the asset never reads input. Call ApplyChop(standIn, amount) from a melee sweep, a raycast, a trigger volume, or a timed harvest. ChopProgressed / ChopCompleted events drive your loot, SFX, and score. Chop effort is set globally with an optional per-prototype override.
- Persistent chopped world — chopped locations are saved per tree and restored before the first proximity tick, so a chopped spot never flashes a standing tree on load. Loading is authoritative: the world is rolled to exactly match the save, which makes mid-session save-slot switching work correctly.
- Plug in your own save system — implement a two-method ISaveAdapter and register it with one call. No source edits. The payload is plain serializable C# with no scene or object references, so it drops into JSON, binary, a database row, or a cloud document. Works out of the box with a built-in JSON file adapter if you don't need any of that.
- Play-time tree regrowth (optional, off by default) — chopped trees regrow after a configurable delay counted in in-game time only; closing the game never advances it. A tree never pops in while the player is standing there — regrowth is deferred until they leave range. Remaining regrow time is saved, so a half-grown tree resumes correctly.
- No-regrow areas — drop a Regrowth Mask (sphere or box, gizmo-drawn, no collider needed) on any object to keep ground clear where the player has built something. Masks are dynamic and stack; remove the building and the tree comes back. Purely runtime — it changes nothing in your save data. Custom rules via IRegrowthBlocker.
- Pooled stand-ins — stand-ins are pooled and reused, with colliders auto-restored and onSpawned / onDespawned hooks so prefabs that fall, break, or swap meshes reset cleanly.
- Safe with your TerrainData — hiding a tree is runtime-only. Every hidden instance is restored on teardown and on exiting Play mode in the Editor, so your terrain asset is left exactly as you authored it.
- Editor tooling — one-click prototype-row generation from your terrain, inspector validation that warns about collider setups that cause invisible colliders, and a live in-inspector debug list of every chopped tree and its regrowth countdown during Play mode.
- Game creator 2 integration — use the familiar game creator 2 visual scripting to add custom behaviour to your choppable trees and reach to tree chopping. (Requires onl game creator 2 core module)