3d坦克大战

这篇具有很好参考价值的文章主要介绍了3d坦克大战。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


一、 介绍

有两种模式,电脑人对战、玩家pk
玩家1:ws控制移动、ad控制转向、空格控制开火
玩家2:上下箭头控制移动,左右箭头控制转向,enter控制开火

3d坦克大战


二、 导入美术资源、调节光亮

导入美术资源。
设置天空颜色为蓝色,调节光亮
设置摄像机合适的位置
相机设置为正交视图

3d坦克大战
3d坦克大战


三、 坦克脚本

制作坦克
添加碰撞体
添加刚体,y轴移动设置为冻结,x轴、z轴旋转设置为冻结
脚本:玩家1ws控制坦克前后移动,ad控制坦克旋转;
			玩家2前后控制坦克前后移动,左右控制坦克旋转;
打开输入设置
玩家1移动、攻击方式
玩家2移动、攻击方式

3d坦克大战

3d坦克大战

float v = Input.GetAxis("Vertical"+number);
		rigidbody.velocity = transform.forward * v * speed1;
		
float h = Input.GetAxis("Horizontal"+number);
		rigidbody.angularVelocity = transform.up * h * spped2;

四、 添加坦克移动效果、挂载脚本

给坦克左右履带,都添加上粒子效果

3d坦克大战


五、 制作子弹预制体、脚本

子弹模型添加网格碰撞体、勾选“凸面”
勾选 触发器
添加刚体
添加爆炸粒子效果

3d坦克大战

撞到任何碰撞体,都发生爆炸
爆炸后销毁子弹
public void OnTriggerEnter(Collider collider){
		GameObject.Instantiate(ex,transform.position,transform.rotation);
		GameObject.Destroy(this.gameObject);
	}
爆炸粒子效果持续1.5秒,脚本挂载到粒子效果上
	    Destroy(this.gameObject,time);

六、 子弹发射点、发射子弹脚本

子弹要在固定炮口反射,创建空物体

3d坦克大战

在发射点实例化子弹、设置子弹发射
	public GameObject shellpoint;
	public KeyCode firekey=KeyCode.Space;
	private Transform firepoint;
	public float shellspeed = 100;

	
    void Start()
    {
	    firepoint=transform.Find("point");
    }

    // Update is called once per frame
    void Update()
    {
	    if (Input.GetKeyDown(firekey))
	    {
	    	GameObject go=GameObject.Instantiate(shellpoint,firepoint.position,firepoint.rotation);
	    	go.GetComponent<Rigidbody>().velocity=go.transform.forward*shellspeed;	
	    }
    }

七、 坦克血量脚本

坦克初始 hp:100
受到一次子弹攻击,血量减random(10,20)
hp<0,播放爆炸粒子效果ex
销毁坦克
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class health: MonoBehaviour
{
	// Start is called before the first frame update
	public int hp=100;
	public GameObject ex;
	public AudioClip noise;
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        
    }
    
	public void tankdamage(){
		if (hp<=0)
		{
			return;
		}
		hp-=Random.Range(10,20);
		
		if (hp<=0)
		{
			AudioSource.PlayClipAtPoint(noise,transform.position);
			GameObject.Instantiate(ex,transform.position+Vector3.up,transform.rotation);
			GameObject.Destroy(this.gameObject);
		}
		
	}
}


八、 设置相机视角

复制坦克,作为玩家2。
玩家1、玩家2距离越远,相机拉长越远。
玩家1、玩家2距离越近,相机拉长越近。

脚本挂载到相机上
public class CAM1 : MonoBehaviour 
{
    
    //声明公共的Transform类型的变量player1和player2,用于存储游戏对象的位置信息
    public Transform player1;
    public Transform player2;

    //声明私有的Camera类型的变量camara和Vector3类型的变量offset,用于存储摄像机的引用和偏移量
    private Camera camara;
    private Vector3 offset;


    void Start() 
    {
        //计算偏移量
        offset = transform.position - (player1.position + player2.position) / 2;
        //获取摄像机的引用
        camara = this.GetComponent<Camera>();

    }

    void Update() 
    {

        //判断player1和player2是否为空,如果为空则返回
        if (player2 == null || player1 == null)
            return;

        //根据player1和player2的位置计算摄像机的位置
        transform.position = (player1.position + player2.position) / 2 + offset;

        //计算player1和player2之间的距离
        float distance = Vector3.Distance(player1.position, player2.position);

        //如果距离小于等于5,则返回
        if (distance <= 5f)
        {
            return;
        }

        //计算摄像机的正交大小
        float size = distance * 0.875f;

        //设置摄像机的正交大小
        camara.orthographicSize = size;
    }
}

3d坦克大战


九、 设置环形滑动条,表示hp

3d坦克大战

脚本挂载到坦克上
拖入滑动条
using System.Collections; 
using System.Collections.Generic; 
using UnityEngine; 
using UnityEngine.UI; 

public class health: MonoBehaviour //定义一个名为health的公共类,继承自MonoBehaviour类
{
    //声明公共的int类型变量hp,GameObject类型变量ex,和AudioClip类型变量noise,用于存储坦克的生命值、爆炸特效和爆炸音效
    public int hp = 100;
    public GameObject ex;
    public AudioClip noise;

    //声明私有的Slider类型变量hpslider和int类型变量hpTotal,用于显示坦克的生命值条和存储坦克的总生命值
    public Slider hpslider;
    private int hpTotal;

    void Start() //在开始时调用的函数
    {
        hpTotal = hp; //将hp赋值给hpTotal
    }

    void Update() //每帧更新时调用的函数
    {

    }

    //当坦克受到伤害时调用的函数
    public void tankdamage()
    {
        if (hp <= 0) //如果生命值小于等于0,则返回
        {
            return;
        }
        hp -= Random.Range(10, 20); //生命值减去一个10到20之间的随机数

        //设置生命值条的值
        hpslider.value = (float)hp / hpTotal;

        if (hp <= 0) //如果生命值小于等于0,则播放音效、实例化爆炸特效,并销毁坦克对象
        {
            AudioSource.PlayClipAtPoint(noise, transform.position);
            GameObject.Instantiate(ex, transform.position + Vector3.up, transform.rotation);
            GameObject.Destroy(this.gameObject);
        }

    }
}

3d坦克大战


十、 下载素材包

https://wwez.lanzoul.com/iBG3n0t7931a
文章来源地址https://www.toymoban.com/news/detail-419819.html






到了这里,关于3d坦克大战的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • pygame--坦克大战(三)

    添加显示子弹 按空格键产生子弹,并将子弹添加到子弹列表中 将子弹添加到窗口 修改MainGame类,显示子弹方法 修改子弹类,创建live属性,与根据移动位置修改live状态 修改MainGame类,修改显示子弹类,与事件监听 实现发射子弹方法 敌方坦克加入窗口后,发射子弹,并将子弹添

    2024年04月13日
    浏览(39)
  • pygame坦克大战

    很高兴为你提供帮助。以下是一个简单的坦克大战游戏。 完整代码: 蓝色为我方坦克 红色为敌方坦克 白色为子弹

    2024年02月08日
    浏览(38)
  • 坦克大战-kotlin

    专栏简介 💒个人主页 📰专栏目录 点击上方查看更多内容 📖心灵鸡汤📖 人生中,有些事情是我们可以掌控的,把握得好,我们会拥有更多的成功机会,即使失败,也不会怨天尤人。 欢迎订阅!收藏!   仿照IT黑马kotlin教程中的坦克大战,在它的基础上做了以下升级:  

    2024年02月12日
    浏览(39)
  • Python坦克大战完整版

    图片和音效自己自行在网上下载即可。    

    2024年02月04日
    浏览(42)
  • Java游戏开发 —— 坦克大战

    坦克大战也是小时一个比较经典的游戏了,我在网上也是参考了韩顺平老师写的坦克大战,并做了一下完善,编写出来作为儿时的回忆吧! 创建主窗口,加载菜单及游戏面板。 在游戏面板中初始化各种参数,并建立各种功能组件。 利用线程固定刷新游戏界面。 处理各种碰撞

    2024年02月06日
    浏览(59)
  • JAVA坦克大战游戏v3

    JAVA坦克大战游戏v3 素材 bomb_3.gif bomb_2.gif bomb_1.gif 项目结构 游戏演示 MyTankGame3.java Members.java

    2024年02月11日
    浏览(51)
  • Java笔记037-坦克大战【3】

    目录 坦克大战【3】 坦克大战0.6 增加功能 思路分析 坦克大战【0.7】 增加功能 思路分析 坦克大战【3】(0.7) 运行结果 增加功能 防止敌人坦克重叠运动 记录玩家的成绩(累计击毁敌方坦克数),暂存盘【IO流】  记录当时的敌人坦克坐标/方向,存盘退出【IO流】 玩游戏时,可以

    2023年04月09日
    浏览(39)
  • Python实现【坦克大战】+源码分享

    坦克大战,这款经典的电子游戏,无疑是许多80后和90后心中不可磨灭的童年记忆。它不仅仅是一款游戏,更是那个时代科技娱乐方式的缩影,见证了电子游戏行业的起步与发展。 在那个电脑和网络尚未完全普及的年代,坦克大战以其简单的规则、丰富的关卡设计和紧张刺激

    2024年04月10日
    浏览(39)
  • 超详细 Unity 大作业之 坦克大战

    本次大作业中,我选择的主题是制作一款简单的坦克大战小游戏,实现此项目借鉴并使用了BiliBili教程及资源和学姐的博,利用Unity自带的3D导航技术实现敌人坦克的自动导航。 演示视频:Unity大作业-坦克大战_演示 项目地址:坦克大战 参考视频:坦克大战教程 学姐博客:第

    2024年02月07日
    浏览(36)
  • 学习 Python 之 Pygame 开发坦克大战(二)

    坦克大战游戏包含很多个物体,现在要对这些物体进行总结 类名 包含的操作 包含的属性 敌方坦克类 射击,移动,显示 生命,速度,伤害,方向,类型 我方坦克类 射击,移动,显示 生命,速度,伤害,方向,装甲,等级 子弹类 移动,显示 方向,伤害,发射源,速度 墙壁

    2024年02月02日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包