目录

15、子弹开火的逻辑

16、子弹开火位置的设置

17、场景中子弹生成

测试


15、子弹开火的逻辑

在Player.cs中添加
public class Player : NetworkBehaviour
{……private float nextFire; //下一次开火的时间public float fireRate = 0.75f; //两次开火至少相隔的时间public Transform shotPos; // 开火位置……private void FixedUpdate(){……//开火if (Input.GetButton("Fire1")){if (Time.time > nextFire){nextFire = Time.time + fireRate;CmdShoot((short) (shotPos.position.x * 10), (short) (shotPos.position.z * 10));}}}……[Command]void CmdShoot(short xPos, short zPos){Vector3 shotCenter =Vector3.Lerp(shotPos.position, new Vector3(xPos / 10f, shotPos.position.y, zPos / 10f), 0.6f);// 创建子弹,并同步到客户端// 所有客户端进行特效显示}[ClientRpc]protected void RpcOnShot(){// 显示特效}
}

16、子弹开火位置的设置

在炮台下建立子对象,开火位置ShotPos,放置炮台口

17、场景中子弹生成

新建一个3D球形,让子弹成为它的子对象,命名为Bullet,并删除Mesh Renderer,在3D球形上添加刚体实现碰撞机制,然后添加网络ID和位置同步的组件。
新建Bullet.cs
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Mirror;
public class Bullet : NetworkBehaviour
{public float speed = 15;private Rigidbody myRigidbody;private void Awake(){myRigidbody = GetComponent<Rigidbody>();}private void Start(){myRigidbody.velocity = speed * transform.forward;}
}
将 Bullet.cs添加到Bullet对象上
保存成预制体,并在场景中删除
在Player.cs继续完善子弹发射逻辑
public class Player : NetworkBehaviour
{……public GameObject BulletPrefab; //………………[Command]void CmdShoot(short xPos, short zPos){Vector3 shotCenter =Vector3.Lerp(shotPos.position, new Vector3(xPos / 10f, shotPos.position.y, zPos / 10f), 0.6f);// 创建子弹,并同步到客户端GameObject obj = Instantiate(BulletPrefab, shotCenter, Quaternion.Euler(0, turret.eulerAngles.y, 0)); //把预制体实例化出子弹NetworkServer.Spawn(obj,obj.GetComponent<NetworkIdentity>().assetId); // 在服务器端生成,并同步// 所有客户端进行特效显示RpcOnShot();}[ClientRpc]protected void RpcOnShot(){// 显示特效}
}
由于预制体子弹会在服务器中生成,所以需要提前注册

测试

【Unity3D-Mirror多人坦克大战】子弹及其开火位置的生成、子弹开火逻辑(四)相关推荐

  1. Unity3d实现双人网络坦克大战

    效果预览 https://pan.baidu.com/s/1w3RccGs7FueDopwZTaPrpA#list/path=%2F 资源准备 所需要的资源和上周的AI自动寻路一样: 使用NavMes ...

  2. Unity3d 机试题目 坦克大战总结

    面试的时候,先是正常的面试,然后是笔试,最后是机试.算好一切准备得还算完善,就是机试题目坦克大战,里面会有几个要点老是忘记.在这里首先要郑重感谢我不知道在哪里看到的博客以及他的作者,正好解决了我的疑惑 ...

  3. 【Unity3D-Mirror多人坦克大战】坦克生成、移动和摄像机跟随(二)

    目录 7.创建角色 8.在坦克上面创建血条 9.为游戏对象添加NetworkTransform 10.角色移动 11.摄像机相随 12.炮台移动 测试 7.创建角色 新建一个立方体Player,取消它 ...

  4. Unity3D项目之《坦克大战》

    2016年2月4日11:00:27 Tank_Project_Log 1.新建工程,导入资源,新建Scenes文件夹,保存该场景进该文件夹 2.删除场景中的默认灯光 2.1 再把Prefab里的Lev ...

  5. 【Unity3D-Mirror多人坦克大战】生命盾牌物品的创建、物品动画的创建(九)

    目录 31.物品类基础配置 32.生命盾牌物品创建 33.创建动画 测试 31.物品类基础配置 在ObjectSpawner.cs添加代码 ​ using System.Collections; us ...

  6. 双人坦克大战 - Unity3D

    一个简单的双人坦克游戏(3D). GitHub https://github.com/SSGamble/TanksGame 文章目录 总结 创建场景 创建坦克 添加脚本控制坦克移动 双人操作坦克 控制 ...

  7. java游戏牛仔炮筒,《Java小游戏实现》:坦克大战(续2)

    <Java小游戏实现>:坦克大战(续2) 相关博文: 博文<Java小游戏实现>:坦克大战(续1)中已经实现到了坦克可以发射一颗子弹了.这篇博文在此基础上继续实现更多的功能. ...

  8. 坦克大战java(章程)

    坦克大战 ** 目录 坦克大战(一):画出我方坦克与敌方坦克 坦克大战(二):写出子弹,画出子弹以及坦克,还有背景 //最近有点忙,博客没时间更新,需要坦克大战源码可以私聊我,过段时间再更. 坦克大战 ...

  9. JAVA坦克大战TankBattle

    要完成java大作业,不知为何就想做一个坦克大战. 功能是逐步加上去的.一开始就是几个IconImage在一个Frame中移动,后来逐渐加入线程.碰撞检测.导弹发射.击中检测.背景音乐.音效.血量控制 ...

  10. 以JLable特性实现坦克大战(1)

    以AWT特性简单写出坦克大战(1) 在学习java图形界面的时候我发现JLabel的特性可以完美避开图片闪烁问题,由此我以JLabel(javax.swing.JLabel)为核心完成了坦克大战的实现 ...

最新文章

  1. 从终端运行React Native App时出错(iOS)
  2. dev chartcontrol获取x y轴的值_终于,奔驰强势接手了腾势X
  3. JqGrid 列时间格式化
  4. C语言形参和实参的区别
  5. IIS 6.0 访问aspx页面出现404错误
  6. apipost脚本使用二
  7. [凯立德]2014秋季版C1204-C7K05-3321J0L(SP2)WinCE版
  8. Bailian2709 求出e的值【数列求和】(POJ NOI0105-35)
  9. May the Sunshine be with you!
  10. SpringBoot系列(1):Spring和SpringBoot常用注解总结
  11. 需求分析和系统分析的区别
  12. 软件架构风格整理(1 数据流风格)
  13. Java封装、继承、多态、super杂糅在一起的小练习,公司雇员员工工资问题(Employee),练习扩展:创建一个Employee数组,分别创建不同的Employee对象,并打印某个月的工资
  14. 多变量微积分笔记4——全微分与链式法则
  15. powerbi服务器无法显示报表,Power BI 报表中的页面显示设置 - Power BI | Microsoft Docs...
  16. ANN之乘积量化PQ
  17. 从网卡中截获sql server的sql语句
  18. Linux终端设备文件介绍
  19. centos7 yum安装yarn
  20. java五子棋棋盘_Java系列——五子棋的实现

热门文章

  1. MyBatis学习笔记之三
  2. CET-4 week9 阅读 写译
  3. pat basic 1082 射击比赛
  4. Homestead GuestAdditions seems to be installed (6.0.6) correctly, but not running
  5. 最新论文阅读(17)--Pyramidal RoR for Image Classification
  6. Oracle11g64位安装教程
  7. Linux下Oracle11G64位安装流程
  8. win32 窗口 绘制矩形
  9. 简单的CSS3动画案例——奔跑的熊哥
  10. Java获取Excel表格的真实行数