using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using DG.Tweening; using UnityEngine.UI; public class TouchBolt : MonoBehaviour { public static TouchBolt instance; private RaycastHit _hit; [Header("Scripts")] public GameManager gameManager; private Vector3 offset; public Image BoltImage; public GameObject selectedBolt; private void Awake() { instance = this; } void Start() { gameManager=GameManager.instance; } void Update() { if (Input.GetMouseButtonDown(0)) { var ray = Camera.main.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(ray, out _hit)) { if (_hit.collider.gameObject.CompareTag("BOLT")) { var selectObject = _hit.collider.gameObject; //boltfunction(selectObject);-----------------------Select and move object----------- boltuifunction(selectObject); } } } } public void boltuifunction(GameObject selectobj) { selectobj.GetComponent().enabled = false; GameObject image = gameManager.uiimage; Vector3 movePos; RectTransformUtility.ScreenPointToWorldPointInRectangle(image.GetComponent(), image.GetComponent().position, Camera.main, out movePos); movePos.z = selectobj.transform.GetChild(0).transform.localPosition.z; selectobj.transform.GetChild(0).transform.DOMove(movePos, 2f).OnComplete(() => { selectobj.transform.GetChild(0).gameObject.SetActive(false); selectobj.GetComponent().boltstate = Bolt.states.done; }); //selectobj.transform.position = movePos; for (int i = 0; i < selectobj.GetComponent().connectedJoints.Count; i++) { //selectobj.GetComponent().connectedJoints[i].GetComponent().isTrigger = true; Destroy(selectobj.GetComponent().connectedJoints[i]); } } public void boltfunction(GameObject selectedbolt) { if (gameManager.selected.Count == 0) { if (selectedbolt.GetComponent().boltstate != Bolt.states.select) { selectedbolt.transform.DOLocalMoveZ(selectedbolt.transform.localPosition.z - 0.013f, 0.3f); gameManager.selected.Add(selectedbolt); selectedbolt.GetComponent().boltstate = Bolt.states.select; } } if (gameManager.selected.Count == 1) { if ((selectedbolt.GetComponent().boltstate != Bolt.states.select)) { gameManager.selected[0].transform .DOLocalMove(gameManager.selected[0].GetComponent().pos, 0.3f).SetEase(Ease.Linear); selectedbolt.transform.DOLocalMoveZ(selectedbolt.transform.localPosition.z - 0.013f, 0.3f); gameManager.selected.RemoveAt(0); gameManager.selected.Add(selectedbolt); selectedbolt.GetComponent().boltstate = Bolt.states.select; } } } }