我正在尝试在 Unity 中为一个大学项目创建一个自上而下的射击游戏,并且在编程射击机制时遇到问题,下面是子弹预制件的脚本,该脚本应该使子弹沿着玩家鼠标移动的方向移动在实例化时。
我能够使用 Unity 在线教程之一中的一些代码来让对象向鼠标位置移动,问题是一旦它到达鼠标位置它就会停止。我需要知道如何制作它,使其朝鼠标位置的方向移动,然后无限期地沿同一方向移动?
public class Shoot : MonoBehaviour
{
public int speed;
Vector3 mp;
Vector2 md;
float mA;
// Start is called before the first frame update
void Awake()
{
mp = Camera.main.ScreenToWorldPoint(Input.mousePosition);
md = mp - transform.position;
mA = Vector2.SignedAngle(Vector2.up, md);
transform.eulerAngles = new Vector3(0, 0, mA);
}
// Update is called once per frame
void Update()
{
transform.position =
Vector2.MoveTowards(transform.position, mp, speed * Time.deltaTime);
}
}
使用玩家 Transform.position.forward 作为射线的目的地,将玩家的位置作为射线的原点,在射击时创建射线投射命令。
https://docs.unity3d.com/ScriptReference/Physics.Raycast.html
https://docs.unity3d.com/ScriptReference/RaycastCommand.html