您可以使用以下脚本来实现这个功能:

using UnityEngine;

public class CreateAndMoveObject : MonoBehaviour
{
    public GameObject objectPrefab; // 需要生成的物体预制体
    private GameObject createdObject; // 生成的物体实例
    private bool isObjectMoving; // 物体是否正在移动

    void Update()
    {
        if (Input.GetMouseButtonDown(1)) // 检查鼠标右键按下事件
        {
            if (!isObjectMoving) // 只有当物体没有在移动时才能生成新物体
            {
                Vector3 mousePosition = Input.mousePosition;
                Ray ray = Camera.main.ScreenPointToRay(mousePosition);
                RaycastHit hit;

                if (Physics.Raycast(ray, out hit))
                {
                    Quaternion rotation = Quaternion.Euler(0f, 25f, 0f);
                    createdObject = Instantiate(objectPrefab, hit.point, rotation); // 生成物体
                    isObjectMoving = true;
                }
            }
        }

        if (isObjectMoving && createdObject != null) // 检查物体是否正在移动
        {
            Vector3 targetPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
            targetPosition.y = createdObject.transform.position.y; // 使物体保持在生成时的高度

            createdObject.transform.position = Vector3.MoveTowards(createdObject.transform.position, targetPosition, 10f * Time.deltaTime); // 移动物体

            if (createdObject.transform.position == targetPosition) // 检查是否到达目标位置
            {
                Destroy(createdObject); // 销毁物体
                isObjectMoving = false;
            }
        }
    }
}

将此脚本添加到相机对象上,然后将需要生成的物体预制体赋值给objectPrefab变量即可

按下鼠标右键在相机视角坐上角生成一个与y轴25度夹角的物体并且这个物体在生成后会向鼠标点击的位置移动到达位置后销毁

原文地址: https://www.cveoy.top/t/topic/igsg 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录