Unity实现类似我的世界(Minecraft)的创建物体以及销毁物体的功能

来源:互联网 发布:python3 网络编程 编辑:程序博客网 时间:2024/04/29 21:59

最近想做一个类似Minecraft的游戏,我觉得最基本也是有难度的是点击在一个已有Cube的某侧,然后在该物体相应的一侧生成Cube

下面是我学习到的生成的方法,但是有一个地方我觉得多余,把核心代码贴下来和大家分享和交流

void Shoot1()        //点击鼠标左键销毁Cube,右键生成Cube 
{    //生成从摄像机到鼠标点击位置的射线    RaycastHit hit = new RaycastHit();    Ray ray = new Ray();    ray = Camera.main.ScreenPointToRay(Input.mousePosition);    if (Input.GetMouseButtonDown(1))    {        if (Physics.Raycast(ray, out hit))        {            if (hit.collider.gameObject.tag == "Block_1" || hit.collider.gameObject.tag == "Block_2" || hit.collider.gameObject.tag == "Block_3" && Vector3.Distance(hit.transform.position, transform.position) < 5 && Vector3.Distance(hit.transform.position, transform.position) > 1)            {//如果射线碰到需要在旁边生成Cube的Cube            <span style="color:#ff0000;"> blockTemp = hit.collider.transform.position;//被点击的物体的位置             ppTemp = new Vector3(0, 1, 0);//???             blockNormalTemp = hit.normal.normalized;//规范化,需要生成的目标物体在被点击的物体的哪一侧             allTemp = blockTemp + blockNormalTemp + ppTemp;//为什么要加上ppTemp             finalTemp = allTemp - new Vector3(0, 1, 0);//最终的位置             Instantiate(blocks[blockChoosen], finalTemp, Quaternion.identity);//生成</span>            }        }    }    if (Input.GetMouseButtonDown(0))    {        if (Physics.Raycast(ray, out hit))        {            if (hit.collider.gameObject.tag == "Block_1" || hit.collider.gameObject.tag == "Block_2" || hit.collider.gameObject.tag == "Block_3" && Vector3.Distance(hit.transform.position, transform.position) < 5 && Vector3.Distance(hit.transform.position, transform.position) > 0)            {                Destroy(hit.collider.gameObject);            }        }    }}

我不清楚那个ppTemp有什么用,发现将它改为(0,0,0)也可以正常生成,

以上的注释只是我的想法,有注释错的地方希望大家能够指证

效果如下




2 0
原创粉丝点击