2/3D游戏:3D

辅助插件:角色控制器

游戏制作难度系数:中级

用到的其他工具:network

一、解决由于子弹射击速度过快而无法打到物体的问题

    //方法一:
public float Speed = ;
Vector3 originalPos;
void Update()
{
originalPos = transform.position; //获取子弹现在的位置
transform.Translate(Vector3.forward * Speed * Time.deltaTime); //移动子弹,每秒移动800米
Vector3 direction = transform.position - originalPos; //获取子弹移动的方向
float distance = (transform.position - originalPos).magnitude; //获取子弹移动的距离
RaycastHit hit;
if (Physics.Raycast(originalPos, direction, out hit, distance))
{
//其他逻辑操作。。。
}
} //方法二:
public float Speed = ;
Vector3 startPos;
Vector3 endPos;
void Start()
{
//给子弹施加一个向前的力
GetComponent<Rigidbody>().AddForce(Vector3.forward * Speed, ForceMode.Force);
}
void Update()
{
startPos=endPos;
endPos=transform.position;
float distance = (startPos - endPos).magnitude; //获取子弹移动的距离
Ray r = Camera.main.ScreenPointToRay(startPos);
RaycastHit hit;
if (Physics.Raycast(r, out hit, distance))
{
//其他逻辑操作。。。
}
}

二、解决弹痕的位置问题

因为弹痕是一个贴图,所以当射击到某个点上时,我们要把此贴图贴在此点上面,具体实现代码如下:

            GameObject goo = Instantiate(go, hit.point, Quaternion.identity) as GameObject;//实例化一张弹痕贴图
goo.transform.LookAt(hit.point - hit.normal); //使弹痕贴图面向法线上的点 LookAt:旋转物体使z轴指向目标物体。
goo.transform.Translate(Vector3.back * 0.01f); //使弹痕贴图向上移一点,避免贴图与地面重合而造成弹痕贴图显示不正常或无法显示

三、设置弹痕缓慢消失的效果

    public float speed = 0.3f;
private float lefttime = ;
Material meterial;
void Start()
{
meterial = renderer.material;
}
void Update()
{
if (meterial.color.a < 0.005)
{
Destroy(this.gameObject);
}
lefttime += Time.deltaTime;
if (lefttime > 2f) //弹痕出现2秒后,开始执行逐渐透明效果
{
meterial.color = Color.Lerp(meterial.color, Color.clear, speed * Time.deltaTime); // Color.clear 为透明色,设置物体逐渐透明
}
}

 四、设置头盔在骨骼关节下

因为动画是控制模型的骨骼关节,所以必须把头盔放在相应的骨骼关节下,才能实现头盔跟随动画的运动而运动,而不能放在模型的渲染(Mesh Renderer)节点下,渲染节点只是挂了一个渲染组件,来渲染模型的样子的!

五、解决动画和代码控制模型关节冲突的问题

一旦一个模型正在播放动画,我们是无法使用代码控制模型的关节的,因为模型的关节是被动画控制的,动画会在每一帧的update方法里面去控制关节的Transform(这里可以联想到http://www.cnblogs.com/MrZivChu/p/ik.html 基础 -> 3,从3下面的图中可以看出动画确实是控制模型的每一个关节的Transform的),所以我们必须在LateUpdate里面用代码控制模型的关节!

六、控制人物移动

使用CharacterController来控制,主要使用到了CharacterController自带实例的相关脚本

void Update()
{
if (characterController.isGrounded == false)
{
//播放下落的动画
networkView.RPC("PlayState", RPCMode.AllBuffered, "soldierFalling");
}
else
{
float h = Input.GetAxis("Horizontal");
float v = Input.GetAxis("Vertical");
if (Mathf.Abs(h) > 0.05f || Mathf.Abs(v) > 0.05f)
{
networkView.RPC("PlayState", RPCMode.AllBuffered, "soldierWalk");
}
else
{
networkView.RPC("PlayState", RPCMode.AllBuffered, "soldierIdle");
}
}
}

CS局域网射击的更多相关文章

  1. C#源码500份

    C Sharp  短信发送平台源代码.rar http://1000eb.com/5c6vASP.NET+AJAX基础示例 视频教程 http://1000eb.com/89jcC# Winform ...

  2. 3D位置语音,引领吃鸡游戏体验升级

    欢迎大家前往云加社区,获取更多腾讯海量技术实践干货哦~ 作者:腾讯游戏云 导语:在刚刚结束的首届腾讯用户开放日上,腾讯音视频实验室带着3D位置音效解决方案,向所有用户亮相,为用户提供360度立体空间的 ...

  3. 怀旧浪潮来袭,小霸王游戏、windows95......曾经的经典哪些能戳中你的心怀?

    随着前两天上架的 Rewound 在 iPhone 上复刻了 iPod Classic为大家掀起一场怀旧浪潮,那么除了 Rewound还有什么经典?今天我们就来怀旧一下那些曾经的经典.80经典小霸王游 ...

  4. vista/win7系统 红警/CS/星际争霸 局域网连接方法

    昨晚,闲来无事,忽然想起打红警来,于是和宿舍舍友商量一起联机打红警, 可是在win7下不能联机红警,网上很多人都这么说,昨晚我折腾了2小时,终于解决了这个问题. win7系统是可以联机打红警的!!!! ...

  5. 来玩一局CS吗?UE4射击游戏的独立服务器构建

    前言   根据UE4官方文档的介绍,UE4引擎在架构时就已经考虑到了多人游戏的情景,多人游戏基于客户端-服务器模式(CS模式).也就是说,会有一个服务器担当游戏状态的主控者,而连接的客户端将保持近似的 ...

  6. 常看常遇见之一——BS架构VS CS架构

    常看常遇见之一——BS架构VS CS架构 1.BS架构 即Browser/Server(浏览器/服务器)结构,是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构.在这种结构下,用户 ...

  7. 局域网聊天软件(winsocket)

    LANChat工作整理 2013/8/22 程序实现功能: 局域网聊天软件,启动即可找到在线设备,并能够进行简单的文字聊天. 其实下面这个框图已经说明了程序的绝大部分功能原理. 核心类的程序框图 我觉 ...

  8. CS 和 BS 的区别和优缺点

    通俗来讲: bs是浏览器(browser)和服务器(server) cs是静态客户端程序(client)和服务器(server) 区别在于,虽然同样是通过一个程序连接到服务器进行网络通讯,但是bs结构 ...

  9. 什么是CS和BS结构,两种结构的区别

    什么是CS和BS结构,两种结构的区别 什么是C/S和B/S结构?         C/S又称Client/Server或客户/服务器模式.服务器通常采用高性能的PC.工作站或小型机,并采用大型数据库系 ...

随机推荐

  1. POJ-2029 Get Many Persimmon Trees---二维树状数组+枚举

    题目链接: https://vjudge.net/problem/POJ-2029 题目大意: 有N棵树在一个n*m的田里,给出每颗树的坐标 用一个s*t的矩形去围,最多能围几棵树 思路: 用二维树状 ...

  2. D. Bicycle Race_几何

    D. Bicycle Race time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...

  3. 2.NBU管理NetBackup

    2管理NetBackup2.1NetBackup作业任务监视 NetBackup任务监视器可以监视备份.恢复和归档任务的状态,也可以监视NetBackup本身数据库的备份. 2.1.1Activity ...

  4. 2018年第九届蓝桥杯【C++省赛B组】第二题 明码

    汉字的字形存在于字库中,即便在今天,16点阵的字库也仍然使用广泛.16点阵的字库把每个汉字看成是16x16个像素信息.并把这些信息记录在字节中. 一个字节可以存储8位信息,用32个字节就可以存一个汉字 ...

  5. 用keytool制作证书并在tomcat配置https服务(三)

    用keytool制作证书并在tomcat配置https服务(一) 用keytool制作证书并在tomcat配置https服务(二) 用keytool制作证书并在tomcat配置https服务(四) 模 ...

  6. Redis 命令学习

    每天不学习点新的东西,感觉就有点会被社会淘汰掉了.也许现在学习的知识会很快忘记,下次学习用到这个知识点的时候,再回来翻记录的笔记,我想这样会比从头再学,效率会高点吧. 闲话不多聊,回归正题.今天学习r ...

  7. JT796、JT1077部标平台检测报名须知

    检测报名须知 申请道路运输车辆卫星定位系统平台标准符合性检测时,请先将1检测意向单(只针对企业监控平台).2符合性检测申请材料(基本材料包括:申请函.授权人身份证复印件.检测登记表.运输企业信息表.平 ...

  8. C# 委托知识总结【转】

    1.什么是委托,为什么要使用委托 我正在埋头苦写程序,突然想喝水,但是又不想自己去掉杯水而打断自己的思路,于是我就想让女朋友去给我倒水.她去给我倒水,首先我得让她知道我想让她干什么,通知她之后我可以继 ...

  9. 泉五培训Day4

    T1 收果子 题目 [题目描述] 有一个果园,有n棵果树依次排成一排,其中已知第 i 棵果树上结了ai个果子.现在要按照果树编号顺序依次收果子,对于一个能装v个果树的果篮,收果子从第1棵果树开始,如果 ...

  10. js将人民币数字转大写

    function numberToUpper(money) { var cnNums = new Array("零", "壹", "贰", ...