Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- public class NewCar : MonoBehaviour
- {
- // Car values
- [SerializeField] private float movementForce = 18000f; // Force used to move the car
- private float speedForce;
- [SerializeField] private float maxSpeedValue;
- [SerializeField] private float accelerationPower;
- [Space]
- // Hook values
- [SerializeField] private GameObject hookPrefab; // Prefab of the hook that is going to be thrown
- [SerializeField] private Transform[] hookPoint = new Transform[2]; // Hook points relative positions
- GameObject travellingHook; // The hook that got isntantiated | To be removed later when the key is released
- private bool hookThrown = false;
- // Components / Scripts
- DistanceJoint3D distanceJoint;
- ConstantForce myConstantForce;
- private float multiplier;
- void Start()
- {
- multiplier = 1;
- distanceJoint = this.GetComponent<DistanceJoint3D>();
- myConstantForce = this.GetComponent<ConstantForce>();
- }
- void Update()
- {
- // Movement | Forward and backward forces for the car
- if (Input.GetKey(KeyCode.W))
- {
- if (multiplier<maxSpeedValue)
- multiplier += (float)(accelerationPower/100 * Time.deltaTime);
- //myConstantForce.relativeForce = new Vector3(0, 0, movementForce * multiplier);
- //Debug.Log(myConstantForce.relativeForce);
- speedForce =Mathf.Pow(movementForce,multiplier);
- }
- else if (Input.GetKey(KeyCode.S))
- {
- if (multiplier < maxSpeedValue)
- multiplier += (float)(accelerationPower / 100 * Time.deltaTime);
- speedForce = -Mathf.Pow(movementForce, multiplier);
- }
- else
- {
- multiplier = 1;
- speedForce = 0;
- }
- myConstantForce.relativeForce = new Vector3(0, 0, speedForce);
- // Hook launch
- if (Input.GetKeyDown(KeyCode.LeftArrow) && !hookThrown)
- {
- distanceJoint.relativePosition = hookPoint[1];
- AssignHook(hookPoint[0], -1);
- }
- else if (Input.GetKeyDown(KeyCode.RightArrow) && !hookThrown)
- {
- distanceJoint.relativePosition = hookPoint[0];
- AssignHook(hookPoint[1], 1);
- }
- else if (Input.GetKeyUp(KeyCode.LeftArrow) || Input.GetKeyUp(KeyCode.RightArrow))
- {
- distanceJoint.RemoveHook();
- Destroy(travellingHook);
- hookThrown = false;
- }
- }
- private void AssignHook(Transform _launchPosition, int _carSide)
- {
- travellingHook = Instantiate(hookPrefab, _launchPosition.position, Quaternion.Euler(this.transform.eulerAngles));
- HookTraveller travellingHookController = travellingHook.GetComponent<HookTraveller>();
- travellingHookController.carJoint = distanceJoint;
- travellingHookController.hookLaunchPosition = _launchPosition;
- travellingHookController.carSide = _carSide;
- hookThrown = true;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement