我正在嘗試制作一個帶有射擊火球的向導的 3D 等距游戲。我設法讓它發射火球,但它們朝巫師所面對的方向前進:如果我旋轉巫師,火球會改變方向。我能做些什么?謝謝你幫助我。這是我制作的腳本(附在播放器上):
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class WizardController : Characters
{
[SerializeField]
public Transform spawnMagic;
private GameObject magicShot;
public List<GameObject> magicBullets = new List<GameObject>();
private void Start()
{
maxHP = 150.0f;
magicShot = magicBullets[0];
}
void Update()
{
GetInputs();
Attack();
Defend();
cameraFollow();
}
private void FixedUpdate()
{
LookAt();
Move();
}
public override void Attack()
{
if (Input.GetButtonDown("Fire1"))
{
GameObject magicBullet;
isAttacking = true;
GetComponent<Animator>().SetBool("hit1", true);
if (spawnMagic != null)
{
magicBullet = Instantiate(magicShot, spawnMagic.transform.position, Quaternion.identity);
}
}
else
{
GetComponent<Animator>().SetBool("hit1", false);
}
}
}
子彈的移動腳本是一個簡單的“transform.position”行:
transform.position = spawnMagic.forward * (speed * Time.deltaTime);
這就是玩家射擊時發生的情況:
https://youtu.be/TYwWDr??8W4Q4
uj5u.com熱心網友回復:
要解決此問題,您必須使子彈運動獨立于任何Child向導物件或依賴于它的轉換。如果您小心的話,spawnMagic隨著向導的移動,子彈會旋轉,并且子彈被 參考spawnMagic.forward。
首先,您需要在生產期間放置與 spawn spawnMagic 旋轉相同的子彈旋轉。
magicBullet = Instantiate(magicShot, spawnMagic.transform.position, spawnMagic.transform.rotation)
然后spawnMagic.forward在移動部分用區域子彈向前替換,它會使子彈在移動階段的移動獨立于 spawnMagic 方向:
transform.position = transform.forward * (speed * Time.deltaTime)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/471743.html
上一篇:等待任務。延遲(1000);導致崩潰-UnityC#
下一篇:如何計算到像素的距離
