Lostman Island is an FPS game where you're stuck on an island. Hunt fish, grab fruits, and build a boat to escape. Survive the nights against monster. Craft your way to freedom through day and night challenges.
I am utilizing a basic Rigidbody with AddForce to propel an object towards a spear.
The direction is derived from the camera towards the raycast hit point,
then normalized to the spear's position.
When the spear hits the fish at its body position,
I've already set up an empty object on the spear.
Upon impact, this object adjusts its position based on the fish's position.
The fish has a script called 'Follow' that tracks this spear edge point's
position and rotation.
Additionally, there's a static event that triggers all fish to become alert
and panic, resembling real-world behavior.
These coconut trees can generate coconuts procedurally and also spawn stones within a specific radius
by utilizing a random UnitSphere.
Whenever a coconut is hit by a stone, it gradually weakens due to the impact.
If its strength falls below zero, it will fall down by setting
rb.isKinematic to false.
As it falls, a 'Gatherable' script and ScriptableObject data are added
to the fallen coconut, allowing players to pick it up, store it,
and use it later.
In the truck driving simulation, I utilized simple wheel colliders and torque
to control vehicle movement.
When entering or exiting the truck, a smooth fading effect is applied.
During the fade process, the player is repositioned to the truck seat.
Once the player reaches the seat, all player colliders and sensors are disabled.
After that, the truck controller is enabled, allowing the player to drive
the vehicle while enjoying a full 360-degree camera view.
The game requires transporting a large number of objects from one place
to another using the truck’s back storage.
While transporting these objects, it is important to ensure they do not fall
due to terrain irregularities or sudden movement.
To solve this, I implemented a simple alignment AI that allocates a dedicated
space for each stored item.
This system continuously maintains proper alignment and prevents objects
from collapsing or interfering with one another until the player picks them up.
The fuel system is built around an interactable area highlighted using an
outline tool to clearly indicate where interaction is possible.
The system checks whether the player interacts with the fuel tank
while holding a fuel can.
If the conditions are met, the fuel is transferred to refill the truck,
and the fuel can is destroyed to indicate that the refueling process
has been completed.
The hiding mechanic was inspired by Fear to Fathom,
aiming to recreate a similar sense of tension in a different way.
I implemented a simple door interaction system using DOTween
to handle smooth opening and closing animations.
When the door is opened or closed, an internal collider checks whether
the player is positioned inside the hiding area.
If the player is inside, the system switches the door material to a
transparent version and activates the sound detection system,
allowing enemies to react dynamically to player noise.
Certain objects in the game can be picked up directly by hand,
while others are automatically stored in the inventory.
Large objects, for example, are placed directly into the inventory.
However, frequently used items such as the spear are handled differently,
as storing them in the inventory would interrupt gameplay flow.
For these items, interaction is managed through an interface called
'IInteractable', with the specific behavior controlled
by the interactable object itself.
In the ScriptableObject data, the item type is marked as 'Hold'.
This restricts the player’s interaction to picking up, dropping,
and using the item only.
If an item is classified as an inventory item, it is automatically added
to the player’s inventory and can be accessed whenever needed.
The inventory system consists of two equip slots located on the left side
of the interface.
The first slot functions as the main equip slot,
while the second acts as an additional slot.
Items can be dragged and dropped into the main slot
to instantiate and use them immediately.
The additional slot allows players to swap equipped items
using the 'Q' key, enabling quick and efficient
equipment switching during gameplay.
Time progresses naturally, affecting lighting, atmosphere, and gameplay behavior.
Available as an open-source project on GitHub for developers and Unity enthusiasts.