在3d坦克大战中要控制两个坦克
public enum TankType//枚举坦克类型
{
Tank_One=1,
Tank_Two=2,
Tank_Enemy=3,
}
public class ControlTank : MonoBehaviour
{
public TankType tankType = TankType.Tank_One;
public string inputHorizontalStr;
public string inputVerticalStr;
public string inputFireStr;
public Rigidbody _rig;//对象声明之后需要进行实例化才能使用
public float h_Value;
public float v_Value;
public float speed =30;
public float rotatespeed = 60;
//炮弹
public GameObject shell;
public Transform shellPos;
// public float shellSpeed=10;
public float minSpeed = 10;
public float maxSpeed = 20;
public float currentSpeed = 0;
public float speedChange = 5;
public bool IsFire = false;//发射状态
//坦克血量
public float PH = 15;
public Slider phSlider;
//坦克爆炸
public ParticleSystem tankExplosion;
// Start is called before the first frame update
void Start()
{
TankInitilization();
}
//坦克初始化
void TankInitilization()
{
_rig = this.gameObject.GetComponent();
inputHorizontalStr = inputHorizontalStr + (int)tankType;
inputVerticalStr = inputVerticalStr + (int)tankType;
inputFireStr = inputFireStr + (int)tankType;
//血量的初始化
phSlider.maxValue = PH;
phSlider.value = PH;
}
// Update is called once per frame
void Update()
{
//结合input控制器控制坦克移动
//HorizontalUI水平方向 a d VerticalUI 垂直方向 s w
h_Value = Input.GetAxis(inputHorizontalStr);
v_Value = Input.GetAxis(inputVerticalStr);
if(v_Value!=0)
{
_rig.MovePosition(this.transform.position + v_Value*this.transform.forward * speed * Time.deltaTime);//Time.deltaTime:上一帧执行的时间
//当前位置加上移动位置
}
if(h_Value!=0)
{
if(v_Value<0)
{
h_Value = -h_Value;
}
this.gameObject.transform.Rotate(Vector3.up * h_Value * rotatespeed * Time.deltaTime);
}