forked from andrea/homework5
3.3 KiB
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
- More Description
- Game Component
- Implementation Plan
- Detailed Plan
- Expected Challenges
- Class Features
- Code Implementation Plan
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.
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.
- Background implementation
- Character movement and animation
- Shooting system
- Collision system
- Target objects
- 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:
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