Untitled
unknown
plain_text
4 years ago
4.7 kB
8
Indexable
using System.Collections;
using UnityEngine;
class StuffMover : MonoBehaviour
{
//Setting
[SerializeField] float minZ;
[SerializeField] float maxZ;
[SerializeField] float heightOnDrag;
private bool dragging = false;
private float distance;
//References
[SerializeField] GameObject shadow;
[SerializeField] GameObject shadowPlace;
[SerializeField] GameObject fixCube;
[SerializeField] GameObject countText;
Rigidbody rb;
LevelManager levelManager;
//bool
public bool isPlaced;
public bool isMoveable = true;
public bool isIdleShadow;
public bool isFake;
private void Start()
{
rb = GetComponent<Rigidbody>();
shadow.gameObject.SetActive(false);
levelManager = FindObjectOfType<LevelManager>();
countText.gameObject.SetActive(false);
}
void OnMouseDown()
{
if (isMoveable)
{
shadow.gameObject.SetActive(true);
distance = Vector3.Distance(transform.position, Camera.main.transform.position);
dragging = true;
//GetComponent<DotweenAnimation>().SetTween();
GetComponent<Outline>().enabled = true;
GetComponent<BoxCollider>().enabled = false;
transform.rotation = Quaternion.identity;
rb.freezeRotation = true;
countText.gameObject.SetActive(true);
shadow.transform.GetComponent<BoxCollider>().enabled = false;
fixCube.gameObject.SetActive(false);
}
}
void OnMouseUp()
{
if (isMoveable)
{
if (shadow.transform.position.z > minZ && shadow.transform.position.z < maxZ && !isPlaced && !isFake)
{
fixCube.gameObject.SetActive(false);
//Clear
isPlaced = true;
isMoveable = false;
shadow.gameObject.SetActive(true);
shadowPlace.gameObject.SetActive(false);
levelManager.objectCount++;
levelManager.CheckObjectCount();
countText.gameObject.SetActive(true);
rb.useGravity = true;
GetComponent<BoxCollider>().isTrigger = true;
fixCube.transform.GetComponent<BoxCollider>().isTrigger = true;
shadow.transform.GetComponent<BoxCollider>().enabled = true;
shadow.transform.GetComponent<Rigidbody>().useGravity = true;
}
if (!isPlaced)
{
shadow.gameObject.SetActive(false);
rb.freezeRotation = false;
countText.gameObject.SetActive(false);
rb.useGravity = true;
}
dragging = false;
shadow.transform.GetComponent<Rigidbody>().useGravity = true;
GetComponent<Outline>().enabled = false;
GetComponent<BoxCollider>().enabled = true;
fixCube.gameObject.SetActive(true);
}
}
void Update()
{
if (isMoveable)
{
if (dragging)
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
Vector3 rayPoint = ray.GetPoint(distance);
transform.position = Vector3.Lerp(transform.position, new Vector3(rayPoint.x, heightOnDrag, rayPoint.z), 0.3f);
shadow.transform.position = new Vector3(shadow.transform.position.x, transform.position.y, transform.position.z);
if (shadow.transform.position.z > minZ && shadow.transform.position.z < maxZ && !isPlaced && !isFake)
{
GetComponent<OutlineClear>().enabled = true;
}
else
{
GetComponent<OutlineClear>().enabled = false;
}
rb.useGravity = false;
shadow.transform.GetComponent<Rigidbody>().useGravity = false;
}
}
}
public void AnimNow()
{
if (!isIdleShadow && shadow.transform.GetComponent<DotweenAnimation>() != null)
{
shadow.transform.GetComponent<DotweenAnimation>().SetTween();
}
}
private void OnTriggerEnter(Collider other)
{
if (other.transform.name.StartsWith("Floor"))
{
rb.useGravity = false;
rb.isKinematic = true;
transform.position = new Vector3(transform.position.x, transform.position.y+0.05f, transform.position.z);
}
}
}Editor is loading...