unity3d 为什么子弹根本不产卵?

xxe27gdn  于 2022-12-13  发布在  其他
关注(0)|答案(1)|浏览(166)

请查找以下脚本。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class BulletSpawn : MonoBehaviour
{
public GameObject bulletPrefab; // The prefab for the bullet object
public Canvas canvas; // The canvas that the crosshair is under
public Image crosshairImage; // The crosshair image
public float bulletSpeed = 10f; // The speed of the bullet

void Update()
{
if (Input.GetKeyDown(KeyCode.E)) // Check if the space key is pressed
{
// Use the Canvas.worldCamera property to get a reference to the world camera
Camera worldCamera = canvas.worldCamera;

// Use the Image.rectTransform property to get a reference to the crosshair's transform
RectTransform crosshairTransform = crosshairImage.rectTransform;

// Use the Camera.WorldToScreenPoint() method to convert the crosshair's position to screen space
Vector3 screenPos = worldCamera.WorldToScreenPoint(crosshairTransform.position);

// Use the Camera.ScreenToWorldPoint() method to convert the screen space position to world space
Vector3 worldPos = worldCamera.ScreenToWorldPoint(screenPos);

// Use the Instantiate() method to create a new instance of the bulletPrefab object
GameObject newBullet = Instantiate(bulletPrefab, worldPos, Quaternion.identity);

// Use the Rigidbody.velocity property to set the velocity of the bullet
newBullet.GetComponent<Rigidbody>().velocity = worldCamera.transform.forward * bulletSpeed;
}
}
}

在这里,我们是产卵子弹的基础上十字线和它不工作。
我们尝试了繁殖垂直于画布图像的子弹,这是一个十字准线,它没有扩散

t8e9dugd

t8e9dugd1#

如果不知道你所遇到的错误,很难判断。但是,如果你使用Canvas.worldCamera,那么你的Canvas应该处于Screen Space - Camera渲染模式,并且在Render Camera属性中有一个对场景Camera的引用,如下所示:

最重要的是,我会再次检查你是否正确地分配了对bulletPrefabcanvascrosshairImage的引用,并且你的bulletPrefab有一个非运动的Rigidbody组件,它能够被速度影响。
从您粘贴的代码和其中的注解判断,我相当肯定您试图使用ChatGPT生成代码,但实际上并不了解它在做什么。我建议您从头开始学习Unity的基础知识(和C#)在深入潜水或试图复制&粘贴您不理解的代码之前:)

相关问题