Search the Community
Showing results for tags 'vehicles'.
-
> This is defintely the best result I obtained with Leadwerks physics to build a car; I think this car is good enough so that it could be used in a game. > The car reacts depending on terrain, feeling different if climbing or driving down. The car allows speed driving until 140-160 kmh > The dampers became an upgrade that give me the possibility to construct car over 200 kg. That means simply that the cars drive now with much more stability and give for the player heavier feeling. > It approachs the feeling you get in games klike GTA 4.. Even if the car doesn't really get out of control like sometime it happens ingame when cars are drifting. > Car balancing and transmission could get more fine tuning, but this should be no problem. Here is the demo:
-
Hello Debuting 2022 with a very first try of a level design for my offroad game project I try to construct with Leadwerks 4.6 The map needs a lot more improvements. There are a few bugs (like swimming) and some collisions problems, but this how it could look like, with the challenge for the player to find his way through the world - like a puzzle driving game - without getting stucked (like me in this showcase) or have your car destroyed. So I will add an health system, but that should be easy to make. I want to add mud and water effects (visual and physics) The story will be something about to re-construct an abandonned world. Have fun and thx for watching. Thx for modelling: "GAZ-66 Offroad Truck" (https://skfb.ly/6x8Ru) by Yo.Ri is licensed under Creative Commons Attribution (http://creativecommons.org/licenses/by/4.0/).
-
- 3
-
- vehicles
- level design
-
(and 1 more)
Tagged with:
-
It is possible to drive in Le 4.5, but first you have to build a little car system, here is what was made until now: I will expose now how far I am with programming this, so that other members can maybe work on this: This is the structure I created: In blue are the most important children to make the car: - the "wheels" - are fake decorativ wheels to make the car looks like a car (not so important) - The "axe" children are pivots that will build through the script the suspensions. (slider joint) - The "direction" children are pivots that will build the steering system (hinge joint) - The "roue" children are cylinder CSG to make the tires. (hinge joint) Here is the script added on the "jeeplight" main object: that is CSG box with invisible material. Okay let see the script: ------------------------------------------------------ Script variables properties: Script.CarMass=200--int "Car Mass" Script.TireMass=10--int "Tire Mass" Script.SpeedMax=1000--int "Max speed" Script.Amort=0.3--float "Amort, long" Script.Force=2000--int "Amort, force" Script.Rayon=0.5--float "Roue, Rayon" Script.Epaiss=1--float "Pneus, Épaisseur" Script.SeeWheels = false --bool "Voir Roues" ------- not so important Script.traction=4--int "traction 2/4" ------------------------------------------------------- function Script:Start() -- Catch the children: self.Axes={} self.Axes[0]=self.entity:FindChild("AxeAvG") self.Axes[1]=self.entity:FindChild("AxeAvD") self.Axes[2]=self.entity:FindChild("AxeArG") self.Axes[3]=self.entity:FindChild("AxeArD") self.Directions={} self.Directions[0]=self.entity:FindChild("DirectionAvG") self.Directions[1]=self.entity:FindChild("DirectionAvD") self.Tires={} -- "real" tires - invisible cylinders self.Tires[0]=self.entity:FindChild("RoueAvG") self.Tires[1]=self.entity:FindChild("RoueAvD") self.Tires[2]=self.entity:FindChild("RoueArG") self.Tires[3]=self.entity:FindChild("RoueArD") self.Wheels={} --- fake wheels "decorativ" not so important self.Wheels[0]=self.entity:FindChild("WheelAvG") self.Wheels[1]=self.entity:FindChild("WheelAvD") self.Wheels[2]=self.entity:FindChild("WheelArG") self.Wheels[3]=self.entity:FindChild("WheelArD") for n=0,3 do self.Wheels[n]:SetParent(self.entity) end self.PosWheels={} self.PosWheels[0]=self.Wheels[0]:GetPosition() self.PosWheels[1]=self.Wheels[1]:GetPosition() self.PosWheels[2]=self.Wheels[2]:GetPosition() self.PosWheels[3]=self.Wheels[3]:GetPosition() for n=0,3 do self.Tires[n]:SetScale(self.Epaiss,self.Rayon*2,self.Rayon*2) self.Tires[n]:SetFriction(10,10) end -- Joints: self.Volants={} self.Rouages={} self.Amortisseurs={} self.currspeed=0 self.entity:SetMass(self.CarMass) -- Construit les amortisseurs: / ------------------------------------- suspensions local n local pos for n=0,3 do pos=self.Axes[n]:GetPosition(true) self.Axes[n]:SetMass(self.TireMass) self.Amortisseurs[n]=Joint:Slider(pos.x, pos.y, pos.z, 0,1,0, self.Axes[n], self.entity) self.Amortisseurs[n]:EnableLimits() self.Amortisseurs[n]:SetLimits(-0.1/2,0.1/2) self.Amortisseurs[n]:SetTargetAngle(-self.Amort) --at the middle if 0 self.Amortisseurs[n]:SetMotorSpeed(1) -- 1 m/s -- vitesse de la pompe self.Amortisseurs[n]:SetStrength(self.Force) --defatul is 1000 self.Amortisseurs[n]:EnableMotor() -- self.Amortisseurs[n]:SetSpring(50000) end -- Double la force des amortisseurs arrieres / --------------------- make the backward suspensions with 2* forces self.Amortisseurs[2]:SetStrength(self.Force*2) self.Amortisseurs[3]:SetStrength(self.Force*2) self.Amortisseurs[2]:SetMotorSpeed(2) self.Amortisseurs[3]:SetMotorSpeed(2) -- Volant: - ------------------------------------------steering: Forward for n=0,1 do pos=self.Directions[n]:GetPosition(true) self.Directions[n]:SetMass(self.TireMass) self.Volants[n]=Joint:Hinge(pos.x, pos.y, pos.z, 0,1,0, self.Directions[n], self.Axes[n]) self.Volants[n]:SetAngle(0) self.Volants[n]:EnableLimits() self.Volants[n]:SetLimits(-30,30) self.Volants[n]:SetMotorSpeed(200) self.Volants[n]:EnableMotor() end -- On attache les roues: /--------------------------------------- attach the tires for n=0,3 do pos=self.Tires[n]:GetPosition(true) self.Tires[n]:SetMass(self.TireMass) if n<2 then self.Rouages[n]=Joint:Hinge(pos.x, pos.y, pos.z, 1,0,0, self.Tires[n], self.Directions[n]) else self.Rouages[n]=Joint:Hinge(pos.x, pos.y, pos.z, 1,0,0, self.Tires[n], self.Axes[n]) end end end ------------------------------------- function Script:UpdatePhysics() if self.MyCar==1 and InCar>0 then --- these ar my own variables to let the player ingame use the car (not so important for now) -- Traite la direction: --- --------------------manage the steering local direction=self.Volants[0]:GetAngle() if window:KeyDown(Key.Left) then direction=direction-5 elseif window:KeyDown(Key.Right) then direction=direction+5 elseif window:KeyDown(Key.Left)==false and window:KeyDown(Key.Right)== false then if Math:Round(direction)>0 then direction=direction-5 elseif Math:Round(direction)<0 then direction=direction+5 end end self.Volants[0]:SetAngle(direction) self.Volants[1]:SetAngle(direction) -- Traite l'acceleration:---------------------------------------------------------- manage acceleration local Gas=0 if window:KeyDown(Key.Up) then Gas=1 self.currspeed = self.currspeed + 10 if self.currspeed>self.SpeedMax then self.currspeed=self.SpeedMax end elseif window:KeyDown(Key.Down) then Gas=1 self.currspeed = self.currspeed - 10 if self.currspeed<-self.SpeedMax then self.currspeed=-self.SpeedMax end end if Gas==0 then self.currspeed=0 for n=0,self.traction-1 do self.Rouages[n]:DisableMotor() end else for n=0,self.traction-1 do if self.Rouages[n]:MotorEnabled()==false then self.Rouages[n]:EnableMotor() end self.Rouages[n]:SetTargetAngle(self.Rouages[n]:GetAngle()+500) self.Rouages[n]:SetMotorSpeed(self.currspeed) end end --limite la velocite angulaire / ----------------------This limits the "twisting" of the car while fast driving, it is not enough but better self.entity:SetOmega(0,0,0) -- fake wheels update: self.Wheels[0]:SetMatrix(self.Tires[0]:GetMatrix()) self.Wheels[1]:SetMatrix(self.Tires[1]:GetMatrix()) self.Wheels[2]:SetMatrix(self.Tires[2]:GetMatrix()) self.Wheels[3]:SetMatrix(self.Tires[3]:GetMatrix()) self.Wheels[0]:SetPosition(self.PosWheels[0]) self.Wheels[1]:SetPosition(self.PosWheels[1]) self.Wheels[2]:SetPosition(self.PosWheels[2]) self.Wheels[3]:SetPosition(self.PosWheels[3]) end --------------------------------- On the posted image above the used properties can be read. Most important are the force and the car mass parameters. Here is what I could test: - I could make out of this a rapid car but I encounter the problem that the car is bouncing in chaos on the road as the acting forces on the chassis are big big. - Augmnenting the mass makes the joints too weak. - I get the idea that the car actually doesn't have 2 axles as it maybe should have. The 2 wheels forward are not bound through an axle just like the backwards too. - As the car drives, the back of the chassis tends to sink to the floor/terrain, that's why I doubled the suspensions forces of the backwards wheels There much more to test in this. (sorry if my english is not so english ?)
-
TrafficWerks: A traffic system for Leadwerks Features: -Almost any type of road imaginable is possible -Performance stays roughly constant no matter how many roads there are -Adaptive turning means vehicles are less likely to miss turns -Vehicles react to obstacles in front of them including other vehicles Upcoming: -Better turning -Traffic lights (they are completed, but I have to reorganize the script or provide light models or something) -Road prefabs -Multi-lane roads -Variable speed limits http://steamcommunity.com/sharedfiles/filedetails/?id=364622139