Created
January 3, 2021 15:15
-
-
Save SrejonKhan/d1506bbbff525bb3cc344454e1a4675c to your computer and use it in GitHub Desktop.
Snap gameobject to closest gameobject.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System.Collections; | |
using System.Collections.Generic; | |
using UnityEngine; | |
public class SnapClosest : MonoBehaviour | |
{ | |
// Start is called before the first frame update | |
void Start() | |
{ | |
//Snap(); | |
} | |
// Update is called once per frame | |
void Update() | |
{ | |
Snap(); | |
} | |
void Snap() | |
{ | |
if (Physics.Raycast(transform.position, -Vector3.right, out RaycastHit hitL, 1f)) | |
{ | |
var pos = hitL.transform.position + Vector3.right * (hitL.transform.GetComponent<MeshRenderer>().bounds.extents.x + transform.GetComponent<MeshRenderer>().bounds.extents.x); | |
pos.y = transform.position.y; | |
pos.z = transform.position.z; | |
transform.position = pos; | |
} | |
if (Physics.Raycast(transform.position, Vector3.right, out RaycastHit hitR, 1f)) | |
{ | |
var pos = hitR.transform.position + (-Vector3.right) * (hitR.transform.GetComponent<MeshRenderer>().bounds.extents.x + transform.GetComponent<MeshRenderer>().bounds.extents.x); | |
pos.y = transform.position.y; | |
pos.z = transform.position.z; | |
transform.position = pos; | |
} | |
if (Physics.Raycast(transform.position, -Vector3.up, out RaycastHit hitD, 1f)) | |
{ | |
var pos = hitD.transform.position + Vector3.up * (hitD.transform.GetComponent<MeshRenderer>().bounds.extents.y + transform.GetComponent<MeshRenderer>().bounds.extents.y); | |
pos.x = transform.position.x; | |
pos.z = transform.position.z; | |
transform.position = pos; | |
} | |
if (Physics.Raycast(transform.position, Vector3.up, out RaycastHit hitU, 1f)) | |
{ | |
var pos = hitU.transform.position + (-Vector3.up) * (hitU.transform.GetComponent<MeshRenderer>().bounds.extents.y + transform.GetComponent<MeshRenderer>().bounds.extents.y); | |
pos.x = transform.position.x; | |
pos.z = transform.position.z; | |
transform.position = pos; | |
} | |
if (Physics.Raycast(transform.position, -Vector3.forward, out RaycastHit hitF, 1f)) | |
{ | |
var pos = hitF.transform.position + Vector3.forward * (hitF.transform.GetComponent<MeshRenderer>().bounds.extents.z + transform.GetComponent<MeshRenderer>().bounds.extents.z); | |
pos.x = transform.position.x; | |
pos.y = transform.position.y; | |
transform.position = pos; | |
} | |
if (Physics.Raycast(transform.position, Vector3.forward, out RaycastHit hitB, 1f)) | |
{ | |
var pos = hitB.transform.position + (-Vector3.forward) * (hitB.transform.GetComponent<MeshRenderer>().bounds.extents.z + transform.GetComponent<MeshRenderer>().bounds.extents.z); | |
pos.x = transform.position.x; | |
pos.y = transform.position.y; | |
transform.position = pos; | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment