IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> Unity双人坦克大战竞速游戏,超简单教学 -> 正文阅读

[游戏开发]Unity双人坦克大战竞速游戏,超简单教学

好久没更新了,最近在研究unity,这个游戏已经做了好久了一直没发出来,我现在想开发一款猛鬼深林游戏,目前已经开发到新建文件夹了

话不多说,开始我们今天的主题,双人坦克大战竞速游戏

首先创建一个地形,打造出自己想要的地形

然后找一个我们坦克的开始游戏的起点

地形完成后,我们开始完成我们的坦克(player)模块

建立一个坦克模型(tankpalyer),在发射炮口中设立一个空盒子(GameObject),用于子弹发射,并将我们的摄像头(Main Camera)放置我们的坦克后方,完成一个类似于第三人称视角

基本条件完成后,我们开始我们的移动和发射子弹模块

移动脚本

using UnityEngine;
using System.Collections;

public class Yidonone : MonoBehaviour
{
    int Speed_move = 30;
    int Speed_rot = 50;

    void Update()
    {
        if (Input.GetKey(KeyCode.W))
        {
            this.transform.Translate(Vector3.left * Time.deltaTime * Speed_move);
        }
        if (Input.GetKey(KeyCode.S))
        {
            this.transform.Translate(Vector3.right * Time.deltaTime * Speed_move);
        }
        if (Input.GetKey(KeyCode.A))
        {
            this.transform.Rotate(Vector3.down * Time.deltaTime * Speed_rot);
        }
        if (Input.GetKey(KeyCode.D))
        {
            this.transform.Rotate(Vector3.up * Time.deltaTime * Speed_rot);
        }
    }

}

将移动脚本移植进坦克模型(tankpalyer)并且我们的坦克是需要这两个模块

?子弹发射脚本

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Shoot : MonoBehaviour
{
    int Speed = 100;
    public Rigidbody Bullet;
    public Transform FPonit;
    // Start is called before the first frame update
    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.J))
        {

            Rigidbody clone;

            clone = (Rigidbody)Instantiate(Bullet, FPonit.position, FPonit.rotation);

            clone.velocity = transform.TransformDirection(Vector3.left * Speed);

        }


    }
}

将此脚本也移植在我们的坦克玩家(tankpalyer)中,并且在素材文件夹中添加一个小球(Sphere 11)

?然后我们回到坦克玩家中里的脚本添加空盒子和我们的小球

?当然,我们发射了小球,我们也需要写一个子弹销毁,要不然一直发射太多了容易造成卡顿

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class XiaoHui : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        Destroy(gameObject, 2.0f);
    }

    // Update is called once per frame
    void Update()
    {

    }
}

将此脚本移植进小球里,并且我们的小球需要添加刚体(Rigidbody)属性

好了我们其中一个玩家就写好了,你现在试着写出玩家2的模块

.

.

.

.

.

.

写不出来?

这是源码,和玩家1同理,但是子弹是可以同一起用

移动

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Yidontow : MonoBehaviour
{
    int Speed_move = 30;
    int Speed_rot = 50;

    void Update()
    {
        if (Input.GetKey(KeyCode.UpArrow))
        {
            this.transform.Translate(Vector3.left * Time.deltaTime * Speed_move);
        }
        if (Input.GetKey(KeyCode.DownArrow))
        {
            this.transform.Translate(Vector3.right * Time.deltaTime * Speed_move);
        }
        if (Input.GetKey(KeyCode.LeftArrow))
        {
            this.transform.Rotate(Vector3.down * Time.deltaTime * Speed_rot);
        }
        if (Input.GetKey(KeyCode.RightArrow))
        {
            this.transform.Rotate(Vector3.up * Time.deltaTime * Speed_rot);
        }
    }
}

发射

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Shoottow : MonoBehaviour
{
    int Speed = 100;
    public Rigidbody Bullet;
    public Transform FPonit;
    // Start is called before the first frame update
    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.M))
        {

            Rigidbody clone;

            clone = (Rigidbody)Instantiate(Bullet, FPonit.position, FPonit.rotation);

            clone.velocity = transform.TransformDirection(Vector3.left * Speed);

        }


    }
}

人物我们完成了,但是如何进行双人游戏呢?这时我们的摄像机模块就起到了作用,设置分屏,来实现我们的单机器双人游戏

我们只需要点击摄像机里的viewport rect参数进行修改

玩家2的摄像机参数也是同理

?游戏测试:

好了,教程结束

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2022-05-16 11:28:43  更:2022-05-16 11:28:45 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 11:01:36-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码