homework5/PROPOSAL_20200150.md
2025-04-12 04:50:17 +09:00

3.3 KiB

My proposal

Name: joowonkim
Student ID: 20200150
Repository URL: http://git.prototyping.id/20200150/homework5


Table of Contents


Game Title : "polygon alleyway"

Brief Description

This game is an FPS game where you roam around alleyways and shoot key targets to eliminate them.
I got the idea from airsoft games.


More Description

  • The player wins by eliminating key targets while avoiding enemies.
  • Player controls movement and shooting using WASD and mouse.
  • Hidden enemies, object collisions, and an HP system exist.
  • Bullets lose damage over distance and have ballistic falloff.
  • The game will look like a typical FPS scene, with guns, enemies, and 3D objects.

FPSscene

airsoft image
Image from: News article


Game Component

  • 3D polygon character
  • 3D polygon gun
  • 3D objects (interact with bullets)
  • 3D enemies
  • Walls and obstacles

Implementation Plan

I plan to use Unity.

  1. Background implementation
  2. Character movement and animation
  3. Shooting system
  4. Collision system
  5. Target objects
  6. Enemies that attack the player

Detailed Plan

  • For character rigging and animation, I will use Mixamo's free assets.
  • Among them, I plan to use the character shown below:

character image


Expected Challenges

  • Enemy movement and shooting AI
  • Player detection algorithm for enemy
  • Splitting upper/lower body movement based on mouse direction

Class Features

I plan to use the following features covered in class:

  • Collision detection
  • Simple UI animations (e.g., HP bar)
  • Event-driven battle interactions

Code Implementation Plan

The following classes describe the modular components that will make up the game logic in Unity.


PlayerMovement

Handles WASD-based movement for the player.

public class PlayerMovement : MonoBehaviour {
    public float speed = 5f;

    void Update() {
        float x = Input.GetAxis("Horizontal");
        float z = Input.GetAxis("Vertical");
        transform.Translate(new Vector3(x, 0, z) * speed * Time.deltaTime);
    }
}

```csharp
public class PlayerController : MonoBehaviour {
    void Update() {
        Vector3 mousePos = Input.mousePosition;
        // Rotate character to face mouse position
    }
}

```csharp
public class GunController : MonoBehaviour {
    public GameObject bulletPrefab;

    void Update() {
        if (Input.GetMouseButtonDown(0)) {
            Shoot();
        }
    }

    void Shoot() {
        Instantiate(bulletPrefab, transform.position, transform.rotation);
    }
}
```markdown
- `PlayerHP` : manages health and death logic  
- `BulletMover` : handles bullet movement and collision  
- `EnemyMove` : moves enemy based on player's position