init
This commit is contained in:
commit
27755409e3
195 changed files with 146336 additions and 0 deletions
85
Assets/Scripts/ObjectPlacer.cs
Normal file
85
Assets/Scripts/ObjectPlacer.cs
Normal file
|
|
@ -0,0 +1,85 @@
|
|||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using TMPro;
|
||||
using UnityEngine;
|
||||
using UnityEngine.SceneManagement;
|
||||
using UnityEngine.UI;
|
||||
|
||||
public class ObjectPlacer : MonoBehaviour{
|
||||
|
||||
[SerializeField] LayerMask groundMask;
|
||||
[SerializeField] LayerMask obstacleMask;
|
||||
[SerializeField] LayerMask pieceMask;
|
||||
[SerializeField] Camera cam;
|
||||
|
||||
[SerializeField] GameObject cube;
|
||||
PlacerObject placerObject;
|
||||
[SerializeField, Range(0f, 10f)] float rotationMultiplier = 5f;
|
||||
[SerializeField, Range(0f, 2f)] float pieceHeight = 1.5f;
|
||||
float cubeRotation;
|
||||
|
||||
[SerializeField] GameObject piece;
|
||||
|
||||
bool isMouseOverButton;
|
||||
|
||||
[Space]
|
||||
[SerializeField] Canvas canvas;
|
||||
[SerializeField] TMP_Text remainingText;
|
||||
[SerializeField, Range(0f, 20f)] int piecesAvaiable;
|
||||
int piecesRemaining;
|
||||
|
||||
public bool playing;
|
||||
public static bool canvasHidden;
|
||||
|
||||
// Start is called before the first frame update
|
||||
void Start(){
|
||||
placerObject = cube.GetComponent<PlacerObject>();
|
||||
piecesRemaining = piecesAvaiable;
|
||||
if (canvasHidden)
|
||||
canvas.gameObject.SetActive(false);
|
||||
}
|
||||
|
||||
// Update is called once per frame
|
||||
void Update(){
|
||||
Ray ray = cam.ScreenPointToRay(Input.mousePosition);
|
||||
|
||||
if(Physics.Raycast(ray, out RaycastHit hit, 100f, groundMask) && !Physics.Raycast(ray, 100f, obstacleMask) && !isMouseOverButton && !playing){
|
||||
cube.SetActive(true);
|
||||
cube.transform.position = hit.point + Vector3.up * pieceHeight / 2;
|
||||
}else{
|
||||
cube.SetActive(false);
|
||||
}
|
||||
|
||||
cubeRotation += Input.mouseScrollDelta.y * rotationMultiplier;
|
||||
cube.transform.rotation = Quaternion.Euler(0f, cubeRotation, 0f);
|
||||
|
||||
if(Input.GetMouseButtonDown(1) && Physics.Raycast(ray, out RaycastHit pieceHit, 100f, pieceMask) && !Physics.Raycast(ray, 100f, obstacleMask) && !isMouseOverButton && !playing){
|
||||
Destroy(pieceHit.transform.gameObject);
|
||||
piecesRemaining++;
|
||||
}
|
||||
if (Input.GetMouseButtonDown(0) && piecesRemaining > 0 && placerObject.CanPlace && cube.activeSelf && !isMouseOverButton && !playing){
|
||||
piecesRemaining--;
|
||||
Instantiate(piece, cube.transform.position, Quaternion.Euler(0f, cubeRotation, 0f));
|
||||
}
|
||||
|
||||
if (Input.GetKeyDown(KeyCode.Escape)){
|
||||
canvasHidden = !canvasHidden;
|
||||
canvas.gameObject.SetActive(!canvas.gameObject.activeSelf);
|
||||
isMouseOverButton = false;
|
||||
}
|
||||
|
||||
remainingText.text = "LEFT " + piecesRemaining;
|
||||
|
||||
if (Input.GetKeyDown(KeyCode.R)){
|
||||
Restart();
|
||||
}
|
||||
}
|
||||
|
||||
public void Restart(){
|
||||
SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
|
||||
}
|
||||
|
||||
public void MouseOverUI(bool over){
|
||||
isMouseOverButton = over;
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue