CS局域网射击
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局域网射击的更多相关文章
- C#源码500份
C Sharp 短信发送平台源代码.rar http://1000eb.com/5c6vASP.NET+AJAX基础示例 视频教程 http://1000eb.com/89jcC# Winform ...
- 3D位置语音,引领吃鸡游戏体验升级
欢迎大家前往云加社区,获取更多腾讯海量技术实践干货哦~ 作者:腾讯游戏云 导语:在刚刚结束的首届腾讯用户开放日上,腾讯音视频实验室带着3D位置音效解决方案,向所有用户亮相,为用户提供360度立体空间的 ...
- 怀旧浪潮来袭,小霸王游戏、windows95......曾经的经典哪些能戳中你的心怀?
随着前两天上架的 Rewound 在 iPhone 上复刻了 iPod Classic为大家掀起一场怀旧浪潮,那么除了 Rewound还有什么经典?今天我们就来怀旧一下那些曾经的经典.80经典小霸王游 ...
- vista/win7系统 红警/CS/星际争霸 局域网连接方法
昨晚,闲来无事,忽然想起打红警来,于是和宿舍舍友商量一起联机打红警, 可是在win7下不能联机红警,网上很多人都这么说,昨晚我折腾了2小时,终于解决了这个问题. win7系统是可以联机打红警的!!!! ...
- 来玩一局CS吗?UE4射击游戏的独立服务器构建
前言 根据UE4官方文档的介绍,UE4引擎在架构时就已经考虑到了多人游戏的情景,多人游戏基于客户端-服务器模式(CS模式).也就是说,会有一个服务器担当游戏状态的主控者,而连接的客户端将保持近似的 ...
- 常看常遇见之一——BS架构VS CS架构
常看常遇见之一——BS架构VS CS架构 1.BS架构 即Browser/Server(浏览器/服务器)结构,是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构.在这种结构下,用户 ...
- 局域网聊天软件(winsocket)
LANChat工作整理 2013/8/22 程序实现功能: 局域网聊天软件,启动即可找到在线设备,并能够进行简单的文字聊天. 其实下面这个框图已经说明了程序的绝大部分功能原理. 核心类的程序框图 我觉 ...
- CS 和 BS 的区别和优缺点
通俗来讲: bs是浏览器(browser)和服务器(server) cs是静态客户端程序(client)和服务器(server) 区别在于,虽然同样是通过一个程序连接到服务器进行网络通讯,但是bs结构 ...
- 什么是CS和BS结构,两种结构的区别
什么是CS和BS结构,两种结构的区别 什么是C/S和B/S结构? C/S又称Client/Server或客户/服务器模式.服务器通常采用高性能的PC.工作站或小型机,并采用大型数据库系 ...
随机推荐
- 四大CPU体系结构ARM、X86/Atom、MIPS、PowerPC
http://blog.csdn.net/wangjianno2/article/details/52140936 RISC(reduced instruction set computer,精简指令 ...
- tensorflow与android编译
我的过程: 1.下载tensorflow 2.下载ndk.sdk然后放到了tensorflow的目录下 3,修改workspace 4.运行命令:bazel build -c opt //tensor ...
- rabbitmq安装使用
使用 http://www.open-open.com/lib/view/open1325131828249.html ubuntu:apt-get install erlang-noxsudo ap ...
- Media所有参数汇总
Media所有参数汇总 我们最常需要用到的媒体查询器的三个特性,大于,等于,小于的写法.媒体查询器的全部功能肯定不止这三个功能,下面是我总结的它的一些参数用法解释: width:浏览器可视宽度. he ...
- 动画利器animate.css
使用过CSS3编写动画的同学一定感叹CSS3的强大,但是也会感到书写的麻烦.每次都要计算动画的各个参数,十分麻烦.有没有一个库能封装一些常用的CSS3动画效果.答案是肯定的,animate.css就是 ...
- Extjs4.2 tabPosition left 相关
解决tabPosition:left 标签的方向问题 <%@ page language="java" import="java.util.*" pa ...
- Spring的jdbcTemplate 与原始jdbc 整合c3p0的DBUtils 及Hibernate 对比 Spring配置文件生成约束的菜单方法
以User为操作对象 package com.swift.jdbc; public class User { private Long user_id; private String user_cod ...
- finddler的安装与设置
这是抓取手机包的设置 过滤 新安装的,可能还需要证书问题
- Django 入门案例开发
Django是一个重量级的web开发框架,它提供了很多内部已开发好的插件供我们使用:这里不去描述 Django直接进入开发过程. Django入门案例分两部分:一.开发环境的配置:二.业务需求分析. ...
- Linux自带mariadb卸载
MySQL安装过程中报错: dpkg: regarding mysql-community-server_5.6.39-1debian9_i386.deb containing mysql-commu ...