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");
                    }
                }
            }
    }

你好您应该查看碰撞器:。请记住,您也可以将它们用作触发器(在您的项目中,您将需要很少的触发器)。所以在放置立方体时,你们需要检查是否使用了巫婆触发器,然后向上或向右移动立方体,或者其他什么。。。