Implementera Parkour System i Unity
Konceptet med parkour, en träningsdisciplin som fokuserar på att övervinna fysiska hinder med hjälp av rörelse, har fått enorm popularitet i videospel, och erbjuder spelarna en interaktiv och engagerande miljö. Att implementera detta system i Unity kan höja spelupplevelsen. Denna handledning guidar dig genom processen att ställa in ett grundläggande parkour-system i Unity, med fokus på vägglöpning och valv.
Tillgångar som krävs
- En grundläggande karaktärskontroller: Vi kommer att använda en spelarkontroll från tredjepersonskameran i Unity som basklass för modifieringar.
- Parkour-animationer: vägglöpning, valv osv.
1. Ställa in scenen
- Se till att miljön har väggar och hinder taggade på lämpligt sätt, använd "Wall" för väggar och "Obstacle" för valvbara hinder.
2. Ändra 'SC_TPSController'-skriptet för Wall Running
2.1. Upptäcka en vägg:
- Denna metod kontrollerar om karaktären är bredvid en vägg med raycasting.
bool IsBesideWall(Vector3 direction)
{
RaycastHit hit;
if (Physics.Raycast(transform.position, direction, out hit, 1f))
{
if (hit.transform.CompareTag("Wall"))
{
return true;
}
}
return false;
}
2.2. Väggkörning
- Denna coroutine klarar väggkörning.
public float wallRunTime = 2f; // Duration of the wall run.
IEnumerator WallRun(Vector3 direction)
{
float startTime = Time.time;
canMove = false; // Disable regular movement during wall run.
while (Time.time - startTime < wallRunTime)
{
characterController.Move(direction * speed * Time.deltaTime);
yield return null;
}
canMove = true; // Enable regular movement after wall run.
}
- Integrera väggkörning i metoden 'Update()':
// Wall Run
if (IsBesideWall(transform.right) && Input.GetButton("Jump") && canMove && !characterController.isGrounded)
{
StartCoroutine(WallRun(transform.right));
}
else if (IsBesideWall(-transform.right) && Input.GetButton("Jump") && canMove && !characterController.isGrounded)
{
StartCoroutine(WallRun(-transform.right));
}
3. Ändra 'SC_TPSController' för valv
3.1. Upptäcka ett hinder
- Kontrollera om det finns ett valvbart hinder framför karaktären.
bool IsObstacleInFront()
{
RaycastHit hit;
if (Physics.Raycast(transform.position, transform.forward, out hit, 1.5f))
{
if (hit.transform.CompareTag("Obstacle"))
{
return true;
}
}
return false;
}
3.2. Vaulting
- Lägg till en valvmetod:
void Vault()
{
canMove = false; // Disable regular movement during vaulting.
// Translate the player over the obstacle.
Vector3 vaultMovement = (Vector3.up + transform.forward) * speed * Time.deltaTime;
characterController.Move(vaultMovement);
canMove = true; // Enable regular movement after vaulting.
}
- Integrera valv i metoden 'Update()':
// Vaulting
if (IsObstacleInFront() && Input.GetButton("Jump") && canMove && characterController.isGrounded)
{
Vault();
}
Slutsats
Dessa modifieringar kommer att introducera wall running och valvfunktioner till den befintliga tredjepartsspelaren. Testa dessa nya rörelser i olika scenarier för att säkerställa att de fungerar som avsett. Justeringar kan vara nödvändiga beroende på spelets specifika miljö eller önskad parkour-mekanik.