坦克大战核心功能是坦克移动和转向、发射子弹等简单的逻辑。
坦克移动和转向:
void FixedUpdate()
{
//v 垂直方向就是世界z轴
float v = Input.GetAxis("VerticalPlayer"+number);
//依靠垂直方向前进和后退
rigidbody.velocity = transform.forward *v* speed;
//h 水平方向就是世界x轴
float h = Input.GetAxis("HorizontalPlayer"+number);
//依靠h水平方向转动角度
rigidbody.angularVelocity = transform.up * h * angularSpeed;
//如果按下了前后或者左右键都会发出移动声音
if (Mathf.Abs(h) > 0.1 || Mathf.Abs(v) > 0.1)
{
audio.clip = drivingAudio;
//若当前没有进行播放移动声音,若没这一步操作,就是很混乱的声音了
if(audio.isPlaying==false)
audio.Play();
}
else//否则发出引擎声音
{
audio.clip = idleAudio;
//若当前没有进行播放移动声音
if (audio.isPlaying == false)
audio.Play();
}
}
坦克攻击(发射子弹):
// Update is called once per frame
void Update () {
if (Input.GetKeyDown(fireKey))
{
GameObject go = GameObject.Instantiate(shellPrefabs, firePosition.position, firePosition.rotation) as GameObject;
go.GetComponent().velocity = go.transform.forward * shotSpeed;
}
}
使用三个摄像机分别提供上帝视角、A玩家第一人称视角、B玩家第一人称视角,具体如何实现这个可以如下:
https://blog.csdn.net/qq_39574690/article/details/78506692