1 using System.Collections;
2 using System.Collections.Generic;
3 using UnityEngine;
4
5 public class player : MonoBehaviour
6 {
7
8 private SpriteRenderer spriteRender; // 精灵渲染
9 public Sprite[] tankSprite; //坦克的精灵数组,左右
10 public float moveSpeed = 3f;
11 public GameObject bulletPrefab;//子弹预制体
12 public float speed = 5f;
13 private Vector3 bulletEulerAngles; //子弹旋转角度
14
15 // Use this for initialization
16 void Start()
17 {
18 spriteRender = this.GetComponent<SpriteRenderer>(); //获取到精灵渲染组件
19 }
20
21 // Update is called once per frame
22 //void Update()
23 //{
24 // float h = Input.GetAxisRaw("Horizontal"); //水平轴 x方向(-1,1)
25 // transform.Translate(Vector3.right * h * moveSpeed * Time.deltaTime, Space.World); //
26 // if (h > 0) //向右移动
27 // {
28 // spriteRender.sprite = tankSprite[1]; //向右移动的图片
29 // }
30 // else if (h < 0)
31 // {
32 // spriteRender.sprite = tankSprite[3]; //向左移动
33 // }
34 // float v = Input.GetAxisRaw("Vertical"); // 垂直方向
35 // transform.Translate(Vector3.up * v * moveSpeed * Time.deltaTime, Space.World);
36 // if(v > 0)
37 // {
38 // spriteRender.sprite = tankSprite[0];
39 // }
40 // else if (v < 0)
41 // {
42 // spriteRender.sprite = tankSprite[2];
43 // }
44 //}
45 void FixedUpdate()
46 {
47 Move();
48 Attack();
49
50 }
51 //tank 的移动方法
52 void Move()
53 {
54 float h = Input.GetAxisRaw("Horizontal"); //水平轴 x方向(-1,1)
55 transform.Translate(Vector3.right * h * moveSpeed * Time.fixedDeltaTime, Space.World); //
56 if (h > 0) //向右移动
57 {
58 spriteRender.sprite = tankSprite[1]; //向右移动的图片
59 bulletEulerAngles = new Vector3(0, 0, -90);
60 }
61 else if (h < 0)
62 {
63 spriteRender.sprite = tankSprite[3]; //向左移动
64 bulletEulerAngles = new Vector3(0, 0, 90);
65 }
66
67 if (h != 0)
68 {
69 return;
70 }
71
72 float v = Input.GetAxisRaw("Vertical"); // 垂直方向
73 transform.Translate(Vector3.up * v * moveSpeed * Time.fixedDeltaTime, Space.World);
74 if (v > 0) //向前移动
75 {
76 spriteRender.sprite = tankSprite[0];
77 bulletEulerAngles = new Vector3(0, 0, 0);
78 }
79 else if (v < 0) //向后
80 {
81 spriteRender.sprite = tankSprite[2];
82 bulletEulerAngles = new Vector3(0, 0, -180);
83 }
84 }
85
86 //坦克的攻击方法
87 void Attack()
88 {
89 if ( Input.GetKeyDown(KeyCode.Space)) //如果按下空格键就发射子弹
90 {
91 GameObject go = GameObject.Instantiate(bulletPrefab, transform.position, Quaternion.Euler(transform.eulerAngles + bulletEulerAngles));
92 Destroy(go, 2f); Destroy(go, 2f);//两秒后销毁子弹
93 }
94
95 }
96 }