using UnityEngine;
public class TankControl : MonoBehaviour
{
//坦克左边的所有轮子
public GameObject[] LeftWheels;
//坦克右边的所有轮子
public GameObject[] RightWheels;
//坦克左边的履带
public GameObject LeftTrack;
//坦克右边的履带
public GameObject RightTrack;
public float wheelSpeed = 2f;
public float trackSpeed = 2f;
public float rotateSpeed = 2f;
public float moveSpeed = 2f;
public int flag = 1;
private void Update()
{
flag = 1;
//坦克向前移动
if (Input.GetKey(KeyCode.W))
{
//坦克左右两边车轮转动
foreach (var wheel in LeftWheels)
{
wheel.transform.Rotate(new Vector3(wheelSpeed,0f,0f));
}
foreach (var wheel in RightWheels)
{
wheel.transform.Rotate(new Vector3(wheelSpeed, 0f, 0f));
}
//履带滚动效果
LeftTrack.transform.GetComponent<Renderer>().material.mainTextureOffset += new Vector2(-trackSpeed,0f);
RightTrack.transform.GetComponent<Renderer>().material.mainTextureOffset += new Vector2(-trackSpeed,0f);
//坦克车身向前移动
transform.Translate(new Vector3(0f,0f,moveSpeed*Time.deltaTime));
}
//坦克向后移动
if (Input.GetKey(KeyCode.S))
{
//坦克左右两边车轮转动
foreach (var wheel in LeftWheels)
{
wheel.transform.Rotate(new Vector3(-wheelSpeed, 0f, 0f));
}
foreach (var wheel in RightWheels)
{
wheel.transform.Rotate(new Vector3(-wheelSpeed, 0f, 0f));
}
//履带滚动效果
LeftTrack.transform.GetComponent<Renderer>().material.mainTextureOffset += new Vector2(trackSpeed, 0f);
RightTrack.transform.GetComponent<Renderer>().material.mainTextureOffset += new Vector2(trackSpeed, 0f);
//坦克车身向前移动
transform.Translate(new Vector3(0f, 0f, -moveSpeed * Time.deltaTime));
flag = -1;
}
//坦克向左转
if (Input.GetKey(KeyCode.A))
{
//坦克左右两边车轮转动
foreach (var wheel in LeftWheels)
{
wheel.transform.Rotate(new Vector3(flag*wheelSpeed, 0f, 0f));
}
foreach (var wheel in RightWheels)
{
wheel.transform.Rotate(new Vector3(flag*wheelSpeed, 0f, 0f));
}
//履带滚动效果
LeftTrack.transform.GetComponent<Renderer>().material.mainTextureOffset += new Vector2(-flag*trackSpeed, 0f);
RightTrack.transform.GetComponent<Renderer>().material.mainTextureOffset += new Vector2(-flag*trackSpeed, 0f);
//坦克车身向左转
transform.Rotate(new Vector3(0f,-flag*rotateSpeed*Time.deltaTime,0f));
}
//坦克向右转
if (Input.GetKey(KeyCode.D))
{
//坦克左右两边车轮转动
foreach (var wheel in LeftWheels)
{
wheel.transform.Rotate(new Vector3(flag*wheelSpeed, 0f, 0f));
}
foreach (var wheel in RightWheels)
{
wheel.transform.Rotate(new Vector3(flag*wheelSpeed, 0f, 0f));
}
//履带滚动效果
LeftTrack.transform.GetComponent<Renderer>().material.mainTextureOffset += new Vector2(-flag*trackSpeed, 0f);
RightTrack.transform.GetComponent<Renderer>().material.mainTextureOffset += new Vector2(-flag*trackSpeed, 0f);
//坦克车身向右转
transform.Rotate(new Vector3(0f, flag*rotateSpeed*Time.deltaTime, 0f));
}
}
}