Files
2026-06-07 22:59:32 +08:00

97 lines
3.3 KiB
C#

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<Collider>().enabled = false;
GameObject image = gameManager.uiimage;
Vector3 movePos;
RectTransformUtility.ScreenPointToWorldPointInRectangle(image.GetComponent<RectTransform>(), image.GetComponent<RectTransform>().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<Bolt>().boltstate = Bolt.states.done;
});
//selectobj.transform.position = movePos;
for (int i = 0; i < selectobj.GetComponent<Bolt>().connectedJoints.Count; i++)
{
//selectobj.GetComponent<Bolt>().connectedJoints[i].GetComponent<Collider>().isTrigger = true;
Destroy(selectobj.GetComponent<Bolt>().connectedJoints[i]);
}
}
public void boltfunction(GameObject selectedbolt)
{
if (gameManager.selected.Count == 0)
{
if (selectedbolt.GetComponent<Bolt>().boltstate != Bolt.states.select)
{
selectedbolt.transform.DOLocalMoveZ(selectedbolt.transform.localPosition.z - 0.013f, 0.3f);
gameManager.selected.Add(selectedbolt);
selectedbolt.GetComponent<Bolt>().boltstate = Bolt.states.select;
}
}
if (gameManager.selected.Count == 1)
{
if ((selectedbolt.GetComponent<Bolt>().boltstate != Bolt.states.select))
{
gameManager.selected[0].transform
.DOLocalMove(gameManager.selected[0].GetComponent<Bolt>().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<Bolt>().boltstate = Bolt.states.select;
}
}
}
}