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 Managers : MonoBehaviour
- {
- [SerializeField] GameObject sonicPrefab;
- [SerializeField] Transform spawnPoint;
- [SerializeField] Transform targetMaxDistance;
- [SerializeField] float speed = 5.0f;
- [SerializeField] float spawnDelay = 0.5f;
- private GameObject sonicInstance;
- private Rigidbody2D sonicRB;
- private Vector3 targetPosition;
- private bool attemptInProgress;
- private void Start()
- {
- // spawn sonic clone
- Debug.Log("Creating first sonic");
- sonicInstance = Instantiate(sonicPrefab, spawnPoint.position, spawnPoint.rotation);
- // freeze constraints
- sonicRB = sonicInstance.GetComponent<Rigidbody2D>();
- sonicRB.constraints = RigidbodyConstraints2D.FreezeAll;
- attemptInProgress = false;
- targetPosition = targetMaxDistance.position;
- }
- private void FixedUpdate()
- {
- if (Input.GetKey(KeyCode.Mouse0) && !attemptInProgress)
- {
- Debug.Log("Starting attempt");
- attemptInProgress = true;
- sonicRB.constraints = RigidbodyConstraints2D.None;
- }
- if (!attemptInProgress)
- {
- var step = speed * Time.deltaTime;
- sonicInstance.transform.position = Vector3.MoveTowards(sonicInstance.transform.position, targetPosition, step);
- if (Vector3.Distance(sonicInstance.transform.position, targetPosition) < 0.001f)
- {
- // flip position to neg
- targetPosition.x *= -1.0f;
- }
- }
- }
- private IEnumerator SpawnSonic()
- {
- yield return new WaitForSeconds(spawnDelay);
- Debug.Log("Creating new sonic");
- sonicInstance = Instantiate(sonicPrefab, spawnPoint.position, spawnPoint.rotation);
- sonicRB = sonicInstance.GetComponent<Rigidbody2D>();
- sonicRB.constraints = RigidbodyConstraints2D.FreezeAll;
- attemptInProgress = false;
- targetPosition.x *= -1.0f;
- }
- public void ResetSonic()
- {
- Debug.Log("Killing sonic");
- Destroy(sonicInstance);
- StartCoroutine(SpawnSonic());
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement