{ 'using System.Collections; using UnityEngine;

public class MouseRightClick : MonoBehaviour { public GameObject prefab; // 需要生成的预制体 public float moveSpeed = 5f; // 预制体的移动速度

private Camera mainCamera;

private void Start()
{
    mainCamera = Camera.main;
}

private void Update()
{
    // 监听鼠标右键按下事件
    if (Input.GetMouseButtonDown(1))
    {
        // 获取鼠标右键的位置
        Vector3 mousePosition = Input.mousePosition;
        // 计算预制体生成位置
        Vector3 spawnPosition = GetSpawnPosition(mousePosition);

        // 开始协程,生成预制体并移动
        StartCoroutine(SpawnAndMove(prefab, spawnPosition, mousePosition));
    }
}

private Vector3 GetSpawnPosition(Vector3 mousePosition)
{
    // 将鼠标位置转换为世界坐标
    Vector3 worldPosition = mainCamera.ScreenToWorldPoint(mousePosition);
    // 在右键的左斜上方靠近屏幕边缘位置生成预制体
    Vector3 spawnPosition = new Vector3(worldPosition.x - 1f, worldPosition.y + 1f, 0f);
    return spawnPosition;
}

private IEnumerator SpawnAndMove(GameObject prefab, Vector3 spawnPosition, Vector3 targetPosition)
{
    // 生成预制体
    GameObject clone = Instantiate(prefab, spawnPosition, Quaternion.identity);
    
    // 移动预制体
    while (Vector3.Distance(clone.transform.position, targetPosition) > 0.01f)
    {
        clone.transform.position = Vector3.MoveTowards(clone.transform.position, targetPosition, moveSpeed * Time.deltaTime);
        yield return null;
    }

    // 销毁预制体
    Destroy(clone);
}

} '}


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

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