public CarEntity() { frontLeft = new CarWheel(this); frontRight = new CarWheel(this); backLeft = new CarWheel(this); backRight = new CarWheel(this); }
public override void Start() { base.Start(); driveBehavior = DriveBehavior.None; vehicleControls = GetComponent <VehicleControls>(); turretTransform = transform.Find("Turret"); turret = turretTransform.GetComponent <SheepTurret>(); turret.owner = gameObject; myRigidBody = GetComponent <Rigidbody2D>(); if (reversePosition) { reverseFactor *= -1; } acceleration = Random.value; if (reversePosition) { OrientationHelper.RotateTransform(turretTransform, 180); } foreach (Transform child in transform.Find("Body").transform) { CarWheel wheel = child.GetComponent <CarWheel>(); if (wheel) { wheel.vehicleControls = vehicleControls; } } }
public static Car GetACarFromFactory(CarEngine engine, CarWheel wheel) { CarGas gas = GetSomeCarGas(); Car runningCar = CarFactory.BuildARunningCar(engine, wheel, gas); // VendingMachine has the knowledge of Engine & Wheel at this point MustDoCarTesting(runningCar); return runningCar; }
//Adds a new wheel to the Cosmos database [MWH] //new PartitionKey(data.VehicleModel) public async Task <CarWheel> AddWheelItemASync(CarWheel data) { Console.Write(data.Model); var response = await this._container.CreateItemAsync <CarWheel>(data, new PartitionKey(data.WheelDimensions.Width)); return(response.Resource); }
private void ApplyEnabled(CarWheel Wheel, bool enable) { if (Wheel != null) { Wheel.enabled = enable; } }
public static Car GetACarFromFactory(CarEngine engine, CarWheel wheel) { CarGas gas = GetSomeCarGas(); Car runningCar = CarFactory.BuildARunningCar(engine, wheel, gas); // VendingMachine has the knowledge of Engine & Wheel at this point MustDoCarTesting(runningCar); return(runningCar); }
void Start() { gameMarker = GameObject.Find("Game Root/GameMarker"); currentStunDuration = maxStunDuration; myRigidbody = GetComponent <Rigidbody2D>(); players.Add(gameObject); playerHitState = gameObject.AddComponent <PlayerHitState>() as PlayerHitState; playerHitState.player = gameObject; GameObject vulcanObject = Instantiate(Resources.Load("Vulcan"), transform.position, Quaternion.identity) as GameObject; vulcanObject.transform.parent = transform; vulcan = vulcanObject.GetComponent <Vulcan>() as Vulcan; vulcan.player = this; GameObject bombLauncherObject = Instantiate(Resources.Load("Bomb Launcher"), transform.position, Quaternion.identity) as GameObject; bombLauncherObject.transform.parent = transform; bombLauncher = bombLauncherObject.GetComponent <BombLauncher>() as BombLauncher; bombLauncher.player = this; shotgun = gameObject.AddComponent <Shotgun>() as Shotgun; shotgun.player = this; gigaBeam = gameObject.AddComponent <GigaBeam>() as GigaBeam; gigaBeam.player = this; magnetMissile = gameObject.AddComponent <MagnetMissile>() as MagnetMissile; magnetMissile.player = this; reversePosition = GetComponent <Entity>().affinity.GetComponent <Fleet>().reversePosition; body = transform.Find("Body").gameObject; body.GetComponent <SpriteRenderer>().color = GetComponent <Entity>().affinity.GetComponent <Fleet>().teamColor; shieldObject = Instantiate(shieldPrefab, transform.position, Quaternion.identity) as GameObject; shieldObject.transform.parent = gameObject.transform; shield = shieldObject.GetComponent <Shield>(); shield.player = this; playerHitState.SwitchToInvincible(); damageBehavior = GetComponent <DamageBehavior>(); currentExValue = GetComponent <Entity>().affinity.GetComponent <Fleet>().lastExValue; gameObject.transform.eulerAngles = new Vector3( gameObject.transform.eulerAngles.x, gameObject.transform.eulerAngles.y, gameObject.transform.eulerAngles.z - 90); vehicleControls = GetComponent <VehicleControls>(); if (reversePosition) { reverseIndex *= -1; } GameObject playerHud = Instantiate(Resources.Load("HUD/PlayerHUD"), transform.position, Quaternion.identity) as GameObject; playerHud.transform.parent = GameObject.Find("WorldspaceHUD").transform; playerHud.GetComponent <PlayerHUD>().player = this; defaultColor = body.GetComponent <SpriteRenderer>().color; foreach (Transform child in body.transform) { CarWheel wheel = child.GetComponent <CarWheel>(); if (wheel) { wheel.vehicleControls = vehicleControls; } } currentExValue = maxExValue; }
public static Car BuyACar() { CarEngine selectedEngine = new CarEngine(); //Select an Engine you like CarWheel selectedWheel = new CarWheel(); //Select a Wheel you like Car car = CarVendingMachine.GetACarFromFactory(selectedEngine, selectedWheel); return(car); }
public bool Raycast(float length, bool doPhysics, Vector3 offset, ref CarWheel wheel, float dt) { var position = _parent.WorldPos; var rotation = _parent.WorldRot; var wheelAttachPos = (position + rotation.Up * 20.0f) + offset; var wheelExtend = wheelAttachPos - rotation.Up * length; var tr = Trace.Ray(wheelAttachPos, wheelExtend) .Ignore(_parent) .Run(); if (!doPhysics) { var wheelPosition = tr.Hit ? tr.EndPos : wheelExtend; wheelPosition += rotation.Up * _parent.WheelRadius; wheel.distance = length * tr.Fraction; if (tr.Hit) { DebugOverlay.Circle(wheelPosition, rotation * Rotation.FromYaw(90), _parent.WheelRadius, Color.Red.WithAlpha(0.1f), false); DebugOverlay.Line(tr.StartPos, tr.EndPos, Color.Red, 0, false); } else { DebugOverlay.Circle(wheelPosition, rotation * Rotation.FromYaw(90), _parent.WheelRadius, Color.Green.WithAlpha(0.1f), false); DebugOverlay.Line(wheelAttachPos, wheelExtend, Color.Green, 0, false); } return(tr.Hit); } if (!tr.Hit) { return(false); } var body = _parent.PhysicsBody; _previousLength = _currentLength; _currentLength = length - tr.Distance; var springVelocity = (_currentLength - _previousLength) / dt; var springForce = body.Mass * 50.0f * _currentLength; var damperForce = body.Mass * (1.5f + (1.0f - tr.Fraction) * 3.0f) * springVelocity; var velocity = body.GetVelocityAtPoint(wheelAttachPos); var speed = velocity.Length; var speedDot = MathF.Abs(speed) > 0.0f ? MathF.Abs(MathF.Min(Vector3.Dot(velocity, rotation.Up.Normal) / speed, 0.0f)) : 0.0f; var speedAlongNormal = speedDot * speed; var correctionMultiplier = (1.0f - tr.Fraction) * (speedAlongNormal / 1000.0f); var correctionForce = correctionMultiplier * 50.0f * speedAlongNormal / dt; body.ApplyImpulseAt(wheelAttachPos, tr.Normal * (springForce + damperForce + correctionForce) * dt); return(true); }
private void Awake() { carControl = GetComponent<CarControl>(); flWheel = carControl.WheelFL; frWheel = carControl.WheelFR; rlWheel = carControl.WheelRL; rrWheel = carControl.WheelRR; JoinNodeNetwork(); }
public static Car BuyACar() { CarEngine selectedEngine = new CarEngine(); //Select an Engine you like CarWheel selectedWheel = new CarWheel(); //Select a Wheel you like // Only Caller has the knowledge of Engine & Wheel Func<CarGas, Car> getARunningCarWithGas = gas => CarFactory.BuildARunningCar(selectedEngine, selectedWheel, gas); Car car = CarVendingMachine.GetACarFromFactory(getARunningCarWithGas); return car; }
public static Car BuyACar() { CarEngine selectedEngine = new CarEngine(); //Select an Engine you like CarWheel selectedWheel = new CarWheel(); //Select a Wheel you like // Only Caller has the knowledge of Engine & Wheel Func <CarGas, Car> getARunningCarWithGas = gas => CarFactory.BuildARunningCar(selectedEngine, selectedWheel, gas); Car car = CarVendingMachine.GetACarFromFactory(getARunningCarWithGas); return(car); }
private void ApplyCommonParameters(CarWheel Wheel) { Wheel.ForwardWheelFriction = ForwardWheelFriction; Wheel.SidewaysWheelFriction = SidewaysWheelFriction; Wheel.brakeForceFactor = brakeForceFactor; Wheel.motorForceFactor = motorForceFactor; Wheel.performancePeak = motorPerformancePeak; Wheel.sidewaysDriftFriction = sidewaysDriftFriction; Wheel.staticFrictionMax = staticFrictionMax; Wheel.serviceMode = serviceMode; Wheel.optimized = optimized; }
void OnSceneGUI() { CarWheel wheel = (CarWheel)this.target; Transform wheelModelTransform = wheel.transform; if (wheel.wheelModel != null) { wheelModelTransform = wheel.wheelModel; } Handles.color = new Color(0f, 1f, 0f, 0.4f); Vector3 topSuspensionPosition = wheel.transform.position + Vector3.up * wheel.suspensionHeight; Handles.DrawDottedLine(wheel.transform.position, topSuspensionPosition, 2f); Handles.DrawWireArc(topSuspensionPosition, wheelModelTransform.forward, wheel.transform.up, 360f, wheel.wheelRadius); Handles.color = Color.red; Handles.DrawWireArc(wheel.transform.position, wheelModelTransform.forward, wheel.transform.up, 360f, wheel.wheelRadius); if (wheel.rotate) { Vector3 arrowDirection = Vector3.Cross(wheelModelTransform.forward, wheel.transform.up); Handles.ArrowHandleCap(0, wheel.transform.position + wheel.transform.up * wheel.wheelRadius, Quaternion.LookRotation(arrowDirection), 0.5f, EventType.Repaint); } if (wheel.turnAngle != 0f) { Handles.color = new Color(0f, 0f, 1f, 0.5f); Quaternion turnQuaternion = Quaternion.AngleAxis(wheel.turnAngle, wheel.transform.up); Handles.DrawWireArc(wheel.transform.position, turnQuaternion * wheelModelTransform.forward, wheel.transform.up, 180f, wheel.wheelRadius); turnQuaternion = Quaternion.AngleAxis(-wheel.turnAngle, wheel.transform.up); Handles.DrawWireArc(wheel.transform.position, turnQuaternion * wheelModelTransform.forward, wheel.transform.up, 180f, wheel.wheelRadius); } }
private void ApplyFrontParameters(CarWheel Wheel) { Wheel.sidewaysForceFactor = frontSidewaysGrip; }
private void ApplyTraction(CarWheel Wheel, float motorSlip, float brakeSlip, float handBrakeInput) { float slipPeak = Wheel.getForwardPeakSlip(); float slipMax = Wheel.getForwardMaxSlip(); var Hit = new WheelHit(); float slip; float motor = Mathf.Abs(motorSlip); bool grounded = Wheel.getWheelCollider().GetGroundHit(out Hit); if (grounded) { Quaternion steerRot = Quaternion.AngleAxis(Wheel.getWheelCollider().steerAngle, Wheel.transform.up); Vector3 wheelDir = steerRot * Wheel.transform.forward; Vector3 pointV = rigidbody.GetPointVelocity(Hit.point); if (Hit.collider.attachedRigidbody) { pointV -= Hit.collider.attachedRigidbody.GetPointVelocity(Hit.point); } float v = Mathf.Abs(Vector3.Dot(pointV, wheelDir)); if (v + slipPeak <= motorMax) { slip = motor - v; if (slip < 0) { slip = 0; } else if (autoMotorMax && slip > slipPeak) { slip = slipPeak; } } else { float maxSlip; if (tractionV3) { maxSlip = Mathf.Lerp(slipPeak, 0, Mathf.InverseLerp(motorMax - slipPeak, maxSpeed, v)); } else { maxSlip = slipPeak; } slip = maxSlip * motor / motorMax; } if (motorSlip < 0) { slip = -slip; } } else { slip = motorSlip; } if (autoBrakeMax && brakeSlip > slipPeak) { brakeSlip = slipPeak; } brakeSlip = Mathf.Max(brakeSlip, handBrakeInput * slipMax); if (motorInput == 0.0f) { brakeSlip += rollingFrictionSlip / brakeForceFactor; } if (!grounded) { float omega = Wheel.getWheelCollider().rpm *Mathf.Deg2Rad; brakeSlip += omega * omega * 0.0008f / brakeForceFactor; } Wheel.motorInput = slip; Wheel.brakeInput = brakeSlip; }
private void ApplyRearParameters(CarWheel Wheel) { Wheel.sidewaysForceFactor = rearSidewaysGrip; }
void Start() { audioSource = (AudioSource)gameObject.AddComponent(typeof(AudioSource)); wheel = GetComponent <CarWheel>(); }
// Use this for initialization void Start() { smokeEffect = Instantiate(smokeEffectPrefab, gameObject.transform); car = GetComponentInParent <CarController>(); wheel = GetComponentInParent <CarWheel>(); }
public static Car BuildARunningCar(CarEngine engine, CarWheel wheel, CarGas gas) { return(new Car()); }
public static Car BuildARunningCar(CarEngine engine, CarWheel wheel, CarGas gas) { return new Car(); }
private void ApplyEnabled(CarWheel Wheel, bool enable) { if (Wheel != null) Wheel.enabled = enable; }
private void ApplyTraction(CarWheel Wheel, float motorSlip, float brakeSlip, float handBrakeInput) { float slipPeak = Wheel.getForwardPeakSlip(); float slipMax = Wheel.getForwardMaxSlip(); var Hit = new WheelHit(); float slip; float motor = Mathf.Abs(motorSlip); bool grounded = Wheel.getWheelCollider().GetGroundHit(out Hit); if (grounded) { Quaternion steerRot = Quaternion.AngleAxis(Wheel.getWheelCollider().steerAngle, Wheel.transform.up); Vector3 wheelDir = steerRot * Wheel.transform.forward; Vector3 pointV = rigidbody.GetPointVelocity(Hit.point); if (Hit.collider.attachedRigidbody) pointV -= Hit.collider.attachedRigidbody.GetPointVelocity(Hit.point); float v = Mathf.Abs(Vector3.Dot(pointV, wheelDir)); if (v + slipPeak <= motorMax) { slip = motor - v; if (slip < 0) slip = 0; else if (autoMotorMax && slip > slipPeak) slip = slipPeak; } else { float maxSlip; if (tractionV3) maxSlip = Mathf.Lerp(slipPeak, 0, Mathf.InverseLerp(motorMax - slipPeak, maxSpeed, v)); else maxSlip = slipPeak; slip = maxSlip * motor / motorMax; } if (motorSlip < 0) slip = -slip; } else slip = motorSlip; if (autoBrakeMax && brakeSlip > slipPeak) brakeSlip = slipPeak; brakeSlip = Mathf.Max(brakeSlip, handBrakeInput * slipMax); if (motorInput == 0.0f) brakeSlip += rollingFrictionSlip / brakeForceFactor; if (!grounded) { float omega = Wheel.getWheelCollider().rpm * Mathf.Deg2Rad; brakeSlip += omega * omega * 0.0008f / brakeForceFactor; } Wheel.motorInput = slip; Wheel.brakeInput = brakeSlip; }
public static Car BuyACar() { CarEngine selectedEngine = new CarEngine(); //Select an Engine you like CarWheel selectedWheel = new CarWheel(); //Select a Wheel you like Car car = CarVendingMachine.GetACarFromFactory(selectedEngine, selectedWheel); return car; }