C# 如何将一个对象放置在统一体中另一个对象的顶部?
我可以通过光线投射放置对象,但它将对象放置在彼此内部我希望它检测碰撞,这样如果一个对象位于碰撞下方,那么它必须将新对象放置在碰撞上方。或者如果在左侧碰撞,则必须将对象放置在其右侧。 这是我的密码C# 如何将一个对象放置在统一体中另一个对象的顶部?,c#,unity3d,C#,Unity3d,我可以通过光线投射放置对象,但它将对象放置在彼此内部我希望它检测碰撞,这样如果一个对象位于碰撞下方,那么它必须将新对象放置在碰撞上方。或者如果在左侧碰撞,则必须将对象放置在其右侧。 这是我的密码 using UnityEngine; using System.Collections; public class targetPosition : MonoBehaviour { public GameObject obj; Vector3 newPosition; voi
using UnityEngine;
using System.Collections;
public class targetPosition : MonoBehaviour {
public GameObject obj;
Vector3 newPosition;
void Start () {
newPosition = transform.position;
}
void Update()
{
if (Input.GetMouseButtonDown(0)) //It places cube on left click
{
RaycastHit hit;
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, out hit))
{
newPosition = hit.point;
GameObject obj1 = Instantiate(obj,newPosition, Quaternion.identity) as GameObject;
obj1.SetActive (true);
}
}
if (Input.GetMouseButtonDown (1)) //deletes cube on right click
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit))
{
Destroy(hit.collider.gameObject);
}
}
}
}
谢谢。使用此代码,您可以检测光线击中目标的哪一侧。从那时起,您需要实例化与该点有一定偏移量的对象
Vector3 normalOfHit;
void Update()
{
if (Input.GetMouseButtonDown(0)) //It places cube on left click
{
RaycastHit hit;
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, out hit))
{
normalOfHit = hit.normal;
normalOfHit = hit.transform.TransformDirection(normalOfHit);
if(normalOfHit == hit.transform.up)
{
Debug.Log("Hit top side");
}
if (normalOfHit == -hit.transform.up)
{
Debug.Log("Hit bottom side");
}
if (normalOfHit == hit.transform.right)
{
Debug.Log("Hit right side");
}
if (normalOfHit == -hit.transform.right)
{
Debug.Log("Hit left side");
}
if(normalOfHit == hit.transform.forward)
{
Debug.Log("Hit front side");
}
if(normalOfHit == -hit.transform.forward)
{
Debug.Log("Hit back of object");
}
}
}
}
你好您应该查看碰撞器:。请记住,您也可以将它们用作触发器(在您的项目中,您将需要很少的触发器)。所以在放置立方体时,你们需要检查是否使用了巫婆触发器,然后向上或向右移动立方体,或者其他什么。。。