mirror of
https://github.com/Dejvino/roadtrip
synced 2024-12-22 11:48:49 +00:00
Added player as a person walking around.
This commit is contained in:
parent
4f7dc30897
commit
8049608ac3
20
README.md
20
README.md
@ -11,9 +11,23 @@ A game about a journey involving vehicles and obstacles.
|
||||
* Hilly ground
|
||||
* Collidable objects - static and dynamic
|
||||
* People
|
||||
* Walking around - NPCs
|
||||
* Walking around (Player & NPCs)
|
||||
|
||||
### TODO
|
||||
* Orbit camera
|
||||
* Walking around - Player
|
||||
* Enter / Exit a car
|
||||
* Sounds - car engine
|
||||
* Sounds - crashes
|
||||
* Sounds - wheels
|
||||
* Target location (winning condition)
|
||||
* Main menu
|
||||
* Health indicator
|
||||
* NPC AI
|
||||
* Enemy NPCs - punching, shooting
|
||||
* Car models
|
||||
* Scenery models
|
||||
* Bigger map
|
||||
* Map transitions
|
||||
* Roadblocks
|
||||
* FPS camera
|
||||
* Orbit camera
|
||||
|
||||
|
BIN
screenshot.png
BIN
screenshot.png
Binary file not shown.
Before Width: | Height: | Size: 912 KiB After Width: | Height: | Size: 904 KiB |
@ -32,8 +32,9 @@ public class RoadTrip extends SimpleApplication implements ActionListener {
|
||||
final int WEAK = 1;
|
||||
final int TRUCK = 2;
|
||||
final int SPORT = 3;
|
||||
final int FOOT = 4;
|
||||
|
||||
final int carType = SPORT;
|
||||
final int carType = FOOT;
|
||||
|
||||
private BulletAppState bulletAppState;
|
||||
private VehicleControl vehicle;
|
||||
@ -42,14 +43,18 @@ public class RoadTrip extends SimpleApplication implements ActionListener {
|
||||
private float steeringValue = 0;
|
||||
private float accelerationValue = 0;
|
||||
private Vector3f jumpForce = new Vector3f(0, 3000, 0);
|
||||
private Vector3f walkDir = new Vector3f();
|
||||
|
||||
public static void main(String[] args) {
|
||||
RoadTrip app = new RoadTrip();
|
||||
app.start();
|
||||
}
|
||||
|
||||
Node playerNode;
|
||||
|
||||
Spatial map;
|
||||
Spatial car;
|
||||
private BetterCharacterControl playerPersonControl;
|
||||
|
||||
@Override
|
||||
public void simpleInitApp() {
|
||||
@ -58,13 +63,16 @@ public class RoadTrip extends SimpleApplication implements ActionListener {
|
||||
if (DEBUG) bulletAppState.getPhysicsSpace().enableDebug(assetManager);
|
||||
PhysicsTestHelper.createPhysicsTestWorld(rootNode, assetManager, bulletAppState.getPhysicsSpace());
|
||||
setupKeys();
|
||||
buildPlayer();
|
||||
|
||||
map = assetManager.loadModel("Scenes/TestMap.j3o");
|
||||
rootNode.attachChild(map);
|
||||
getPhysicsSpace().addAll(map);
|
||||
|
||||
vehicle.setPhysicsLocation(new Vector3f(5f, 30f, 5f));
|
||||
if (carType == FOOT) {
|
||||
addPlayerPerson();
|
||||
} else {
|
||||
addPlayerCar();
|
||||
}
|
||||
|
||||
addPerson();
|
||||
addPerson();
|
||||
@ -94,7 +102,7 @@ public class RoadTrip extends SimpleApplication implements ActionListener {
|
||||
inputManager.addListener(this, "Reset");
|
||||
}
|
||||
|
||||
private void buildPlayer() {
|
||||
private void addPlayerCar() {
|
||||
Material mat = new Material(getAssetManager(), "Common/MatDefs/Misc/Unshaded.j3md");
|
||||
mat.getAdditionalRenderState().setWireframe(true);
|
||||
mat.setColor("Color", ColorRGBA.Black);
|
||||
@ -222,88 +230,122 @@ public class RoadTrip extends SimpleApplication implements ActionListener {
|
||||
} else if (carType == SPORT) {
|
||||
accelerationForce = 20000f;
|
||||
brakeForce = 200f;
|
||||
|
||||
}
|
||||
mat.getAdditionalRenderState().setWireframe(false);
|
||||
vehicle.setPhysicsLocation(new Vector3f(5f, 30f, 5f));
|
||||
|
||||
playerNode = vehicleNode;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void simpleUpdate(float tpf) {
|
||||
Vector3f vehicleLocation = vehicle.getPhysicsLocation();
|
||||
Vector3f newLocation = new Vector3f(vehicleLocation).add(new Vector3f(-1f, 1.5f, 2.4f).mult(20f));
|
||||
Vector3f playerLocation = playerNode.getLocalTranslation();
|
||||
Vector3f newLocation = new Vector3f(playerLocation).add(new Vector3f(-1f, 1.5f, 2.4f).mult(20f));
|
||||
cam.setLocation(new Vector3f(cam.getLocation()).interpolate(newLocation, Math.min(tpf, 1f)));
|
||||
cam.lookAt(vehicleLocation, Vector3f.UNIT_Y);
|
||||
cam.lookAt(playerLocation, Vector3f.UNIT_Y);
|
||||
}
|
||||
|
||||
public void onAction(String binding, boolean value, float tpf) {
|
||||
float steerMax = 0.5f;
|
||||
if (carType == TRUCK) {
|
||||
steerMax = 0.7f;
|
||||
}
|
||||
if (binding.equals("Lefts")) {
|
||||
if (value) {
|
||||
steeringValue += steerMax;
|
||||
} else {
|
||||
steeringValue += -steerMax;
|
||||
if (carType == FOOT) {
|
||||
float walkSpeed = 3f;
|
||||
if (binding.equals("Lefts")) {
|
||||
if (value) {
|
||||
walkDir.x -= walkSpeed;
|
||||
} else {
|
||||
walkDir.x += walkSpeed;
|
||||
}
|
||||
} else if (binding.equals("Rights")) {
|
||||
if (value) {
|
||||
walkDir.x += walkSpeed;
|
||||
} else {
|
||||
walkDir.x -= walkSpeed;
|
||||
}
|
||||
} else if (binding.equals("Ups")) {
|
||||
if (value) {
|
||||
walkDir.z -= walkSpeed;
|
||||
} else {
|
||||
walkDir.z += walkSpeed;
|
||||
}
|
||||
} else if (binding.equals("Downs")) {
|
||||
if (value) {
|
||||
walkDir.z += walkSpeed;
|
||||
} else {
|
||||
walkDir.z -= walkSpeed;
|
||||
}
|
||||
}
|
||||
vehicle.steer(steeringValue);
|
||||
} else if (binding.equals("Rights")) {
|
||||
if (value) {
|
||||
steeringValue += -steerMax;
|
||||
} else {
|
||||
steeringValue += steerMax;
|
||||
}
|
||||
vehicle.steer(steeringValue);
|
||||
} else if (binding.equals("Ups")) {
|
||||
if (value) {
|
||||
accelerationValue += accelerationForce;
|
||||
} else {
|
||||
accelerationValue -= accelerationForce;
|
||||
}
|
||||
vehicle.accelerate(2, accelerationValue);
|
||||
vehicle.accelerate(3, accelerationValue);
|
||||
playerPersonControl.setWalkDirection(walkDir);
|
||||
playerPersonControl.setViewDirection(walkDir);
|
||||
} else {
|
||||
float steerMax = 0.5f;
|
||||
if (carType == TRUCK) {
|
||||
vehicle.accelerate(4, accelerationValue);
|
||||
vehicle.accelerate(5, accelerationValue);
|
||||
steerMax = 0.7f;
|
||||
}
|
||||
} else if (binding.equals("Downs")) {
|
||||
float b;
|
||||
if (value) {
|
||||
b = brakeForce;
|
||||
} else {
|
||||
b = 0f;
|
||||
}
|
||||
vehicle.brake(0, b);
|
||||
vehicle.brake(1, b);
|
||||
} else if (binding.equals("Revs")) {
|
||||
if (value) {
|
||||
accelerationValue += accelerationForce;
|
||||
} else {
|
||||
accelerationValue -= accelerationForce;
|
||||
}
|
||||
vehicle.accelerate(2, -accelerationValue);
|
||||
vehicle.accelerate(3, -accelerationValue);
|
||||
if (carType == TRUCK) {
|
||||
vehicle.accelerate(4, -accelerationValue);
|
||||
vehicle.accelerate(5, -accelerationValue);
|
||||
}
|
||||
} else if (binding.equals("Space")) {
|
||||
if (value) {
|
||||
vehicle.applyImpulse(jumpForce, Vector3f.ZERO);
|
||||
}
|
||||
} else if (binding.equals("Reset")) {
|
||||
if (value) {
|
||||
System.out.println("Reset");
|
||||
vehicle.setPhysicsLocation(Vector3f.ZERO);
|
||||
vehicle.setPhysicsRotation(new Matrix3f());
|
||||
vehicle.setLinearVelocity(Vector3f.ZERO);
|
||||
vehicle.setAngularVelocity(Vector3f.ZERO);
|
||||
vehicle.resetSuspension();
|
||||
} else {
|
||||
if (binding.equals("Lefts")) {
|
||||
if (value) {
|
||||
steeringValue += steerMax;
|
||||
} else {
|
||||
steeringValue += -steerMax;
|
||||
}
|
||||
vehicle.steer(steeringValue);
|
||||
} else if (binding.equals("Rights")) {
|
||||
if (value) {
|
||||
steeringValue += -steerMax;
|
||||
} else {
|
||||
steeringValue += steerMax;
|
||||
}
|
||||
vehicle.steer(steeringValue);
|
||||
} else if (binding.equals("Ups")) {
|
||||
if (value) {
|
||||
accelerationValue += accelerationForce;
|
||||
} else {
|
||||
accelerationValue -= accelerationForce;
|
||||
}
|
||||
vehicle.accelerate(2, accelerationValue);
|
||||
vehicle.accelerate(3, accelerationValue);
|
||||
if (carType == TRUCK) {
|
||||
vehicle.accelerate(4, accelerationValue);
|
||||
vehicle.accelerate(5, accelerationValue);
|
||||
}
|
||||
} else if (binding.equals("Downs")) {
|
||||
float b;
|
||||
if (value) {
|
||||
b = brakeForce;
|
||||
} else {
|
||||
b = 0f;
|
||||
}
|
||||
vehicle.brake(0, b);
|
||||
vehicle.brake(1, b);
|
||||
} else if (binding.equals("Revs")) {
|
||||
if (value) {
|
||||
accelerationValue += accelerationForce;
|
||||
} else {
|
||||
accelerationValue -= accelerationForce;
|
||||
}
|
||||
vehicle.accelerate(2, -accelerationValue);
|
||||
vehicle.accelerate(3, -accelerationValue);
|
||||
if (carType == TRUCK) {
|
||||
vehicle.accelerate(4, -accelerationValue);
|
||||
vehicle.accelerate(5, -accelerationValue);
|
||||
}
|
||||
} else if (binding.equals("Space")) {
|
||||
if (value) {
|
||||
vehicle.applyImpulse(jumpForce, Vector3f.ZERO);
|
||||
}
|
||||
} else if (binding.equals("Reset")) {
|
||||
if (value) {
|
||||
System.out.println("Reset");
|
||||
vehicle.setPhysicsLocation(Vector3f.ZERO);
|
||||
vehicle.setPhysicsRotation(new Matrix3f());
|
||||
vehicle.setLinearVelocity(Vector3f.ZERO);
|
||||
vehicle.setAngularVelocity(Vector3f.ZERO);
|
||||
vehicle.resetSuspension();
|
||||
} else {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void addPerson() {
|
||||
private Node addPerson() {
|
||||
Spatial personModel = assetManager.loadModel("Models/person.j3o");
|
||||
Node person = new Node("person");
|
||||
person.attachChild(personModel);
|
||||
@ -322,5 +364,13 @@ public class RoadTrip extends SimpleApplication implements ActionListener {
|
||||
Vector3f dir = new Vector3f((float)Math.random() * 2f - 1f, 0f, (float)Math.random() * 2f - 1f);
|
||||
personControl.setViewDirection(dir);
|
||||
personControl.setWalkDirection(dir);
|
||||
|
||||
return person;
|
||||
}
|
||||
|
||||
private void addPlayerPerson()
|
||||
{
|
||||
playerNode = addPerson();
|
||||
playerPersonControl = playerNode.getControl(BetterCharacterControl.class);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user