zoukankan      html  css  js  c++  java
  • 坦克大战

    游戏介绍:

    一共有蓝色和红色两只坦克,蓝色坦克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;


  • 相关阅读:
    C# List<T>用法(转)
    任务列表 (Visual Studio)
    TSQL行转列、列转行
    HRESULT:0x80070057 (E_INVALIDARG)的异常的解决方案(转)
    JS正则表达式详解(转)
    Windows远程登录命令
    JavaScript中的try...catch和异常处理(转)
    javascript如何触发button 的click事件
    在ASP.NET中利JavaScript实现控件的聚焦(转)
    输入一个字符串,将其逆序后输出。(使用C++,不建议用伪码)
  • 原文地址:https://www.cnblogs.com/krystalstar/p/10175496.html
Copyright © 2011-2022 走看看