Unity 中的 3D 等距游戏 - 弹丸跟随玩家移动
3D Isometric game in Unity - Projectile follows player movements
我正在尝试制作一个巫师射击火球的 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);
这就是玩家射击时发生的情况:
要解决这个问题,你必须让子弹的运动独立于任何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)
我正在尝试制作一个巫师射击火球的 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);
这就是玩家射击时发生的情况:
要解决这个问题,你必须让子弹的运动独立于任何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)