- 发射炮弹(可蓄力)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TankShoot : MonoBehaviour
{
public Rigidbody shell;
public Transform firePos;
public float maxForce=20f;
public float minForce=10f;
public float maxChargeTime = 0.75f;
private float currentForce;
private float chargeSpeed;
private bool isFired;
private void OnEnable()
{
currentForce = minForce;
}
private void Start()
{
chargeSpeed = (maxForce - minForce) / maxChargeTime;
}
private void Update()
{
if (currentForce >= maxForce && !isFired)
{
currentForce = maxForce;
Fire();
}
else if(Input.GetKeyDown(KeyCode.Space))
{
isFired = false;
currentForce = minForce;
}
else if (Input.GetKeyDown(KeyCode.Space) && !isFired)
{
currentForce += chargeSpeed * Time.deltaTime;
}
else if (Input.GetKeyUp(KeyCode.Space) && !isFired)
{
Fire();
}
}
private void Fire()
{
isFired = true;
Rigidbody tankShell = Instantiate(shell, firePos.position, firePos.rotation) as Rigidbody;
currentForce = minForce;
}
}