awacke1 commited on
Commit
3792cce
·
verified ·
1 Parent(s): 579a4d7

Update index.html

Browse files
Files changed (1) hide show
  1. index.html +48 -11
index.html CHANGED
@@ -371,7 +371,7 @@
371
 
372
  // Use the updated getRoadPropertiesAtZ function for consistent elevation
373
  const { roadY: elevation_val } = getRoadPropertiesAtZ(worldZ);
374
- vertices.setY(i, elevation_val);
375
  }
376
  roadGeometry.attributes.position.needsUpdate = true;
377
  roadGeometry.computeVertexNormals();
@@ -382,6 +382,24 @@
382
  road.receiveShadow = true;
383
  scene.add(road);
384
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
385
  const centerLineGeometry = new THREE.PlaneGeometry(0.1, roadLength, 1, 200);
386
  centerLineGeometry.rotateX(-Math.PI / 2);
387
 
@@ -392,7 +410,7 @@
392
  const curve_val = Math.sin(localZ * 0.005) * 15;
393
  lineVertices.setX(i, lineVertices.getX(i) + curve_val);
394
  const { roadY: elevation_val } = getRoadPropertiesAtZ(worldZ);
395
- lineVertices.setY(i, elevation_val + 0.01);
396
  }
397
  centerLineGeometry.attributes.position.needsUpdate = true;
398
  centerLineGeometry.computeVertexNormals();
@@ -550,8 +568,10 @@
550
  const car = new THREE.Mesh(new THREE.BoxGeometry(1.8,1,3.8), new THREE.MeshStandardMaterial({color:carColors[Math.floor(Math.random()*carColors.length)]}));
551
  car.castShadow = true;
552
  const {roadY,roadCurve} = getRoadPropertiesAtZ(worldZPosition);
 
 
553
  const laneXOffset = isOncoming ? (roadWidth/4 + 0.25) : (-roadWidth/4 - 0.25);
554
- car.position.set(roadCurve+laneXOffset, 1+roadY, worldZPosition);
555
  car.rotation.y = isOncoming ? Math.PI : 0;
556
  scene.add(car);
557
  const headlightMat = new THREE.MeshBasicMaterial({color:0xFFFFFF});
@@ -855,8 +875,12 @@
855
  else { if(isGrounded)speed*=0.98; else speed*=0.995; if(Math.abs(speed)<0.05)speed=0; }
856
 
857
  if((keys[' ']||keys.j)&&isGrounded&&Math.abs(speed)>10){
858
- jumpForce=1.2+Math.abs(speed)*0.06+suspensionCompression*6; // Increased base and scaling
859
- velocity.y=jumpForce; isGrounded=false; showMessage("Jumping!",1);
 
 
 
 
860
  }
861
 
862
  speed=Math.max(-maxSpeed/2,Math.min(maxSpeed,speed));
@@ -898,7 +922,8 @@
898
  if (distToRampZ < ramp.length / 2 && distToRampX < ramp.width / 2 && playerCar.position.y < ramp.mesh.position.y + ramp.height + carEffectiveRadius) {
899
  onRamp = true;
900
  if (!ramp.used && isGrounded) { // Only trigger jump once and if grounded
901
- velocity.y = ramp.height * 1.5 + Math.abs(speed) * 0.1; // Ramp jump force
 
902
  isGrounded = false;
903
  ramp.used = true; // Mark ramp as used for this jump
904
  showMessage("Ramp Jump!", 2);
@@ -909,7 +934,6 @@
909
  }
910
  });
911
 
912
-
913
  if (isGrounded && !onRamp) { // Don't apply ground physics if on ramp and about to jump
914
  const elevationChange = groundHeightAtCar - lastRoadY;
915
  suspensionCompression = -elevationChange * suspensionStrength;
@@ -925,11 +949,24 @@
925
  playerCar.position.y = groundHeightAtCar + carEffectiveRadius;
926
  isGrounded = true;
927
  const impactForce = Math.abs(velocity.y);
928
- velocity.y = 0; airTime = 0;
929
- if (impactForce > 0.5) { // Increased threshold for damage
930
- decreaseHealth(Math.floor(impactForce*8),`Hard landing!`); // Reduced damage multiplier
 
 
 
 
 
 
 
 
 
 
931
  suspensionCompression = Math.min(impactForce*0.2,0.4);
932
- } else { suspensionCompression = Math.min(impactForce*0.1,0.1); }
 
 
 
933
  }
934
  }
935
  lastRoadY = groundHeightAtCar;
 
371
 
372
  // Use the updated getRoadPropertiesAtZ function for consistent elevation
373
  const { roadY: elevation_val } = getRoadPropertiesAtZ(worldZ);
374
+ vertices.setY(i, elevation_val + 0.1); // Lift road surface slightly above base terrain
375
  }
376
  roadGeometry.attributes.position.needsUpdate = true;
377
  roadGeometry.computeVertexNormals();
 
382
  road.receiveShadow = true;
383
  scene.add(road);
384
 
385
+ // Create thicker road base to prevent water clipping
386
+ const roadBaseGeometry = new THREE.BoxGeometry(roadWidth, 0.5, roadLength);
387
+ const roadBaseMaterial = new THREE.MeshStandardMaterial({ color: 0x444444, roughness: 0.9 });
388
+ const roadBase = new THREE.Mesh(roadBaseGeometry, roadBaseMaterial);
389
+
390
+ // Position road base properly
391
+ const roadBaseVertices = roadBaseGeometry.attributes.position;
392
+ for (let i = 0; i < roadBaseVertices.count; i++) {
393
+ const localZ = roadBaseVertices.getZ(i);
394
+ const worldZ = localZ + roadLength / 2;
395
+ const { roadY } = getRoadPropertiesAtZ(worldZ);
396
+ roadBaseVertices.setY(i, roadBaseVertices.getY(i) + roadY - 0.2); // Position base below road surface
397
+ }
398
+ roadBaseGeometry.attributes.position.needsUpdate = true;
399
+ roadBase.position.z = roadLength / 2;
400
+ roadBase.receiveShadow = true;
401
+ scene.add(roadBase);
402
+
403
  const centerLineGeometry = new THREE.PlaneGeometry(0.1, roadLength, 1, 200);
404
  centerLineGeometry.rotateX(-Math.PI / 2);
405
 
 
410
  const curve_val = Math.sin(localZ * 0.005) * 15;
411
  lineVertices.setX(i, lineVertices.getX(i) + curve_val);
412
  const { roadY: elevation_val } = getRoadPropertiesAtZ(worldZ);
413
+ lineVertices.setY(i, elevation_val + 0.12);
414
  }
415
  centerLineGeometry.attributes.position.needsUpdate = true;
416
  centerLineGeometry.computeVertexNormals();
 
568
  const car = new THREE.Mesh(new THREE.BoxGeometry(1.8,1,3.8), new THREE.MeshStandardMaterial({color:carColors[Math.floor(Math.random()*carColors.length)]}));
569
  car.castShadow = true;
570
  const {roadY,roadCurve} = getRoadPropertiesAtZ(worldZPosition);
571
+
572
+ // Fix lane positioning - oncoming cars should be on player's right side
573
  const laneXOffset = isOncoming ? (roadWidth/4 + 0.25) : (-roadWidth/4 - 0.25);
574
+ car.position.set(roadCurve + laneXOffset, 1+roadY, worldZPosition);
575
  car.rotation.y = isOncoming ? Math.PI : 0;
576
  scene.add(car);
577
  const headlightMat = new THREE.MeshBasicMaterial({color:0xFFFFFF});
 
875
  else { if(isGrounded)speed*=0.98; else speed*=0.995; if(Math.abs(speed)<0.05)speed=0; }
876
 
877
  if((keys[' ']||keys.j)&&isGrounded&&Math.abs(speed)>10){
878
+ // Speed-dependent jump height
879
+ jumpSpeed = Math.abs(speed); // Store speed when jumping
880
+ jumpForce = 0.8 + jumpSpeed * 0.04 + suspensionCompression * 6; // Reduced base jump
881
+ velocity.y = jumpForce;
882
+ isGrounded = false;
883
+ showMessage("Jumping!", 1);
884
  }
885
 
886
  speed=Math.max(-maxSpeed/2,Math.min(maxSpeed,speed));
 
922
  if (distToRampZ < ramp.length / 2 && distToRampX < ramp.width / 2 && playerCar.position.y < ramp.mesh.position.y + ramp.height + carEffectiveRadius) {
923
  onRamp = true;
924
  if (!ramp.used && isGrounded) { // Only trigger jump once and if grounded
925
+ jumpSpeed = Math.abs(speed); // Store speed when hitting ramp
926
+ velocity.y = ramp.height * 1.2 + jumpSpeed * 0.08; // Speed-dependent ramp jump
927
  isGrounded = false;
928
  ramp.used = true; // Mark ramp as used for this jump
929
  showMessage("Ramp Jump!", 2);
 
934
  }
935
  });
936
 
 
937
  if (isGrounded && !onRamp) { // Don't apply ground physics if on ramp and about to jump
938
  const elevationChange = groundHeightAtCar - lastRoadY;
939
  suspensionCompression = -elevationChange * suspensionStrength;
 
949
  playerCar.position.y = groundHeightAtCar + carEffectiveRadius;
950
  isGrounded = true;
951
  const impactForce = Math.abs(velocity.y);
952
+ velocity.y = 0;
953
+
954
+ // Check for successful landing bonuses
955
+ checkLandingBonus(impactForce);
956
+
957
+ airTime = 0;
958
+ // Speed-dependent landing damage
959
+ const speedFactor = Math.max(0.3, jumpSpeed / 45); // Reduce damage for slower jumps
960
+ const damageThreshold = 0.4 + (jumpSpeed / 45); // Higher threshold for faster jumps
961
+
962
+ if (impactForce > damageThreshold) {
963
+ const damage = Math.floor(impactForce * 5 * speedFactor); // Much reduced damage
964
+ decreaseHealth(damage, `Hard landing!`);
965
  suspensionCompression = Math.min(impactForce*0.2,0.4);
966
+ } else {
967
+ suspensionCompression = Math.min(impactForce*0.1,0.1);
968
+ }
969
+ jumpSpeed = 0; // Reset jump speed after landing
970
  }
971
  }
972
  lastRoadY = groundHeightAtCar;