【问题标题】:How can I generate terrain rather than an object on drag and drop in Unity?如何在 Unity 中通过拖放生成地形而不是对象?
【发布时间】:2021-10-22 17:23:45
【问题描述】:

背景

我想知道如何在Unity3D 2020.3版本中编写一个玩家可以通过拖放生成地形的代码。

到目前为止我尝试了什么

我可以在执行前为不可更改的背景创建地形,并在执行期间着陆。

对于对象(预制件),我确认玩家可以在选定位置生成新对象。

附加到游戏对象的代码

ClickSphere.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class ClickSphere : MonoBehaviour
{
    public GameObject prefab;
    private Vector3 mousePosition;
 
    void Update()
    {
        if (Input.GetMouseButtonDown(0)) //the case of drag -> OnMouseDrag() 
        {
        mousePosition = Input.mousePosition;
        mousePosition.z = 10.0f;
        Instantiate(prefab, Camera.main.ScreenToWorldPoint(mousePosition),Quaternion.identity);
        }
    }
}

如何将代码附加到地形?与对象生成相比,我如何处理地形?

【问题讨论】:

    标签: c# unity3d terrain prefab


    【解决方案1】:

    如果您尝试在 3D 项目中执行此操作,我建议您放置一个平面(您可以在其上放置对象)。然后从相机投射光线(在相机方向http://docs.unity3d.com/ScriptReference/Physics.Raycast.html)并根据光线击中的对象,将要放置在光线击中高度的对象实例化。所以你可以生成你想要的地形,然后,当用户需要放置东西时,它不会重叠,因为你知道光线和你最初生成的任何地形之间的交点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-02
      • 1970-01-01
      • 2014-08-16
      • 1970-01-01
      相关资源
      最近更新 更多