坦克大战

游戏介绍:

一共有蓝色和红色两只坦克,蓝色坦克WASD控制移动,空格键发射子弹;红色坦克方向键控制移动,Enter发射子弹。坦克下方有血条,血条消失即游戏结束。 

场景导入:

Window →Lighting→Auto Generate取消;取消光线自动渲染,加快开发进度(自动渲染等待时间太长)

Camera→Project→正交视图与透视图

正交视图:即无消失点投影,物体的大小不会随距离的远近而变化,常用作2D

透视图:和我们眼睛看到的物体一直,近大远小

FixedUpdate()固定帧去调用

float h = Input.GetAxis("Vertical"),h的值域为[-1,1]之间,水平方向

刚体组件(Rigibody)→Constraints:约束,控制对刚体运动的约束,勾选这表示冻结即不发生效果。

可以在Unity→Edit→Project Setting→Input 中进行键盘设置

实例化对象

        public  KeyCode firekey = KeyCode.Space;
if (Input.GetKeyDown(firekey)) { GameObject go = GameObject.Instantiate(shellprefab, transform.position, transform.rotation) as GameObject; go.GetComponent<Rigidbody>().velocity = go.transform.forward * shellspeed; }

设置空格按键,当按下空格按键后,对游戏对象进行实例化,实例化的三个参数分别是实例化的物体对象,对象的位置,对象的旋度;将实例化的对象对象赋值一个名称,以便获取对象的相关组件。

定时毁灭物体

Destroy(this.gameObject, time)

视野跟随控制

 1 using System.Collections;
 2 using System.Collections.Generic;
 3 using UnityEngine;
 4 
 5 public class FollowTarget : MonoBehaviour {
 6 
 7     public Transform Play1;
 8     public Transform Play2;
 9     private Vector3 offset;
10     private Camera camera;
11     void Start () {
12         offset = transform.position - (Play1.position + Play2.position) / 2;
13         camera = this.GetComponent<Camera>();
14     }
15     
16     
17     void Update () {
18         transform.position = (Play1.position + Play2.position) / 2 + offset;
19         float distance = Vector3.Distance(Play1.position, Play2.position);
20         float size = distance * 1;
21         camera.orthographicSize = size;
22     }
23 }

控制两个坦克的视野:

(1)确定两个坦克中心点和相机的偏移:首先调整相机到合适位置,计算出此时相机和中心点的距离,并赋值给偏移量Offset

          动态时,确定相机位置

 transform.position = (Play1.position + Play2.position) / 2 + offset;

(2)确定两个坦克距离和相机Size参数的比例关系:

float distance = Vector3.Distance(Play1.position, Play2.position);
  计算出两个坦克之间的距离,并赋值给distance,size/distance计算出此时的比例系数;
float size = distance * 1;

        动态时,确定相机size值

        获取camera组件,将size值赋值给camera的size组件参数

camera.orthographicSize = size;


原文地址:https://www.cnblogs.com/krystalstar/p/10175496.html