C# 如何在unity2D中制作枪支射击场?
我希望我的wepons在我的2D游戏中有一个射击场。例如,如果子弹超出射程,则销毁子弹。如果我不使用RayCast,是否有问题? 我的Wepon脚本:C# 如何在unity2D中制作枪支射击场?,c#,unity3d,C#,Unity3d,我希望我的wepons在我的2D游戏中有一个射击场。例如,如果子弹超出射程,则销毁子弹。如果我不使用RayCast,是否有问题? 我的Wepon脚本: //Initialization public GameObject Bullet; public Transform FirePoint; //WeponStats public float BulletSpeed; public int Damage; public float Range; private float TimeBtwShot
//Initialization
public GameObject Bullet;
public Transform FirePoint;
//WeponStats
public float BulletSpeed;
public int Damage;
public float Range;
private float TimeBtwShots;
public float StartTimeBtwShots;
private void Start()
{
}
private void Update()
{
if (TimeBtwShots <= 0)
{
if (Input.GetButton("Fire1"))
{
Shoot();
TimeBtwShots = StartTimeBtwShots;
}
}
else
{
TimeBtwShots -= Time.deltaTime;
}
}
void Shoot()
{
GameObject bullet2 = Instantiate(Bullet, FirePoint.position, FirePoint.rotation);
Rigidbody2D rb = bullet2.GetComponent<Rigidbody2D>();
rb.AddForce(FirePoint.right * BulletSpeed, ForceMode2D.Impulse);
}
//初始化
公共游戏对象子弹;
公共转换点;
//韦蓬斯塔斯
公共交通速度;
公共财产损害;
公众浮动范围;
私人浮动时间;
公众浮标StartTimeBtwShots;
私有void Start()
{
}
私有void更新()
{
如果(TimeBtwShots延迟后,您似乎已经在销毁子弹:
Destroy(gameObject, Delay);
如果你想让子弹在经过一段距离后被摧毁,你可以用速度除以距离
Destroy(gameObject, Range / BulletSpeed);
如果你想测量动态行驶距离,你可以在子弹内记录它
void FixedUpdate()
{
var distanceDelta = (transform.position - lastPos).magnitude;
distanceTravelled += distanceDelta;
lastPos = transform.position;
if (distanceTravelled > Range) Destroy(gameObject);
}
你对你目前在一定时间后销毁子弹的方法不满意吗?如果是,为什么不?谢谢你帮助我
void FixedUpdate()
{
var distanceDelta = (transform.position - lastPos).magnitude;
distanceTravelled += distanceDelta;
lastPos = transform.position;
if (distanceTravelled > Range) Destroy(gameObject);
}