Skip to content

Instantly share code, notes, and snippets.

@SrejonKhan
Created January 3, 2021 15:15
Show Gist options
  • Save SrejonKhan/d1506bbbff525bb3cc344454e1a4675c to your computer and use it in GitHub Desktop.
Save SrejonKhan/d1506bbbff525bb3cc344454e1a4675c to your computer and use it in GitHub Desktop.
Snap gameobject to closest gameobject.
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