我希望每把弓都射出我在创建时在 SO 中设置的不同箭头。我需要每个弓来射击 SO 中指定的箭头预制件。
WeaponConfig 有[SerializeField] public GameObject projectile;
我希望能够换出不同箭头的字段,因此每种新武器都可以发射不同的箭头,我将在检查器中设置这些箭头。
拍摄脚本:
public void ShootingArrows()
{
var screenCam = Camera.main.ScreenToWorldPoint(Input.mousePosition);
Vector3 worldMousePos = screenCam;
// Direction of mouse to player
Vector2 direction = (Vector2)((worldMousePos - firePoint.position));
direction.Normalize();
// Creates the arrow locally
GameObject arrow = (GameObject)Instantiate (
arrowPrefab,
firePoint.position + (Vector3)( direction * 0.5f),
firePoint.rotation);
FindObjectOfType<AudioManager>().Play("BowShoot");
// Adds velocity to the arrow
arrow.GetComponent<Rigidbody2D>().velocity = direction * arrowForce;
// Rotate arrow based on position from player to cursor
angle = Mathf.Atan2(direction.y, direction.x) * Mathf.Rad2Deg - 90f;
arrow.transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.AngleAxis(angle, Vector3.forward), 1000 * Time.deltaTime);
}
在我的实例化中,我arrowPrefab
将其设置为脚本顶部的游戏对象。
我将其更改为什么,以实例化预期的射弹?
如果我将其更改为下面的代码,则表示它没有对象引用。
GameObject arrow = (GameObject)Instantiate (
WeaponConfig.projectile,
firePoint.position + (Vector3)( direction * 0.5f),
firePoint.rotation);
我在检查器中的 Projectile 插槽中填充了我想要射击的预期箭头。每个都选择了不同的预制件。如何在 SO 中实例化分配的箭头?