enigma2's People
enigma2's Issues
Make mapParts that contain walls on their edges
Allow BasicMapGenerator to generate a grid of map pieces
After #9 is done.
Instead of creating map pieces in a straight line (in 1 dimension), we should instead generate them in a grid (in 2 dimensions).
- The map pieces should be randomized
- The size of the grid should come from two
int
variables (maybe as private properties of theBasicMapGenerator
class)
Make mapParts that the player could only enter from 1 or 2 sides
Make the enemies turn and run towards the Player when they are in range
When the player is near an enemy, the enemy should turn towards the player and start moving in a straight line. The enemies should move very slowly to make it so that the player can easily move out of their range. For now there is no need for them to stop moving when they get too close to the player.
Make sure enemies respect collision with other enemies, the player, and walls.
Right now EnemyMovement::Update()
modifies transform.position
directly. The problem with this is that transform.position
ignores the physics engine and lets you move (teleport) an enemy literally anywhere you want (into walls or into other enemies, up in the sky, down under the ground).
What we need instead is to
- attach a RigidBody component to the enemies (in
BasicEnemySpawner::spawnDefaultEnemies()
, just like how theHealth
component is being attached to them) - Use RigidBody.MovePosition() to move the enemies, which should make them respect the colliders of other objects
Add NavMesh to the dinamically generated mapParts, so that enemies can walk over them
This will probably have to be done with dynamically using UnityEngine.AI.NavMeshBuilder.
Rename PlayerMovement to PlayerInteraction and refactor it internally
Refactor it internally for now to make it less of a spaghetti code. Do not split it into multiple files for now.
Update the map generator so that it would take into account that certain mapParts are only accessible from certain directions
Depends on #21
Add a unit testing framework
And add documentation on how to run the automated tests.
Create a proper way to change Scenes from code
From code:
- it should be able to give a list of where the player could go (what warp points exist on the map, and what warp points exist in the world)
- when a player wants to go to a different map, it should handle the scene switching (if needed) correctly
- it should handle global components (and the player) correctly upon switching scenes
- the initial loading of the first scene should also go through this
Change the lighting on the player (while in the `big_house`) from `spot` to `point`
It's position should also be changed if needed. It should more closely resemble the lighting from diablo2 after this change.
Add a door to big_house and turn it into a warppad that takes the player to the initial scene
Depends on #24
Rework existing mapParts to feature more recognizable buildings and obstacles
Right now they feature unrecognizable obstacles.
We should change them to include:
- a bridge (no change necessary)
- an area with a small house in the middle of it
- it should include a basic roof
- it should have a basic door
- an area with a small pond in the middle of it
- no need for it to actually feature water, a hole in the ground with a blue plane in it for "water" is good enough
- it should have invisible walls on the edges of the "pond" so the player wouldn't be able to go into the "water"
- an area with a cave enterance in the middle of it
- think something like this
Add a UI for listing and using WarpTargets
Implement a Component, which when attached to a GameObject can display a new UI that will list WarpTargets. Basically this task is about creating something similar to Diablo2's waypoint system.
( Image is only for reference. We will go for a much more basic looking UI for now. )
- Add a
string displayName
attribute toWorldZone
s and make it into a mandatory constructor parameter - Implement a
WarpTargetListUI
component - Make sure that a
List<WarpTarget>
object can be passed toWarpTargetListUI
- Create the UI using unity's basic UI that lists each WarpTarget from the
List<WarpTarget>
object- each one of the WarpTargets should have a button next to them that will call
GameObject.Find(BasicSceneSwitchHandler.GLOBAL_COMPONENTS_HANDLER_NAME).GetComponent<BasicSceneSwitchHandler>().warpToZone(yourWarpTargetInstance);
(sorry for the long function call, will be shortened in the future) - each one of the WarpTargets should display their WorldZone's
displayName
next to the button- (optional) if multiple WarpTargets have the same WorldZone
displayName
then append#2
,#3
, etc.. to the duplicates'sdisplayName
(but do not modify the originalList
)
- (optional) if multiple WarpTargets have the same WorldZone
- each one of the WarpTargets should have a button next to them that will call
Notes:
- Don't worry about opening/closing this UI for now. It's OK if it's permanently open.
- Don't worry about showing the currently active WarpTarget for now.
Add a basic sword swinging animation (attack animation) to the Player
A long pole made of a single cylinder should be fine for now as a "sword". No need for the animation to actually play upon hitting an enemy.
Make sure that enemies aren't sunk in the ground to their waist
Create a new "small house" mapPart prefab
The floor under the house should be the same size as the other mapParts.
- it should include a basic roof
- it should have a basic door
Create a new "BasicMapGenerator" feature
Using the map pieces created in #8 create a class that will add these map pieces to our SampleScene
.
- The name of the class that does this should be
BasicMapGenerator
and it can be added as a Component to theglobal components handler
GameObject. - It should add the map pieces in a straight line starting from the edge of the
Plane
GameObject. - The order can be either hardcoded or random generated.
Update the map generator so that it would feature "walls" on the edge of the map
Depends on #20
Look up what the camera angle is in Diablo3, and set the same angle for our main camera
Turn the door on the small house into a warppad that takes the player into the big_house scene
Create 5 prefabs that we will use as basic map pieces
- They all should have their own rectangular floors
- all their floors should be the same size (slightly bigger than the current size of the Bridge prefab)
- They all should have some "buildings" on them to make them easier to tell apart (one of them can have the Bridge)
Add basic HP system
no need for overhead healthbars for now, either just
- recolor the enemy when it loses HP
- or make a global hp UI that is only visible when hovering on an enemy
Change the coloring of the structures on the mapParts to grey instead of white
So that enemies and the player are clearly visible on them.
Make sure enemies always keep looking horizontally (and do not look up or down)
We do not want them to look upwards when they are near the player or when the player is on higher ground.
In other words, after (correctly) using transform.lookAt(player)
we want to reset their vertical axis (using it's eulerAngles
) to zero. A very similar thing is already being done in PlayerInteractions::calculateMoveDirection()
.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. ๐๐๐
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.