CS局域网射击游戏小结

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

    //方法一:
    public float Speed = 800;
    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 = 100000;
    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 = 0;
    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 为透明色,设置物体逐渐透明
        }
    }
时间: 2024-08-06 11:53:46

CS局域网射击游戏小结的相关文章

Unity3D--学习太空射击游戏制作(二)

步骤三:创建主角 游戏的主角是一艘太空飞船,我们将使用一个飞船模型作为游戏的主角,并赋予他一个脚本,控制他的运动,游戏体的组件必须依赖于脚本才能运行. 01:在Project窗口找到Player.fbx(通过3D Max制作的模型),将其拖动到Hierarchy窗口创建飞船的模型游戏体,然后在Inspector窗口将它的Y轴坐标设置为0,并旋转180度,如图: 02:在Project窗口选择Assets,右键选择Create->Folder创建一个文件夹,取名为Scripts,用于存放脚本文件,

u3d5第一人称射击游戏(C#脚本)完整版并在iOS9.3系统上真机运行

参考资料:<Unity3D\2D手机游戏开发>(第二版) +   百度 涉及U3D的功能有:摄像机控制.物理.动画.智能寻路等. 开发工具:Unity3D5.3.4,VS2015,VMplayer12+MacOSX10.11+XCode7.3(我是Windos笔记本用的是苹果虚拟机,MAC真机不需要虚拟机,直接在appstore下载XCode最新版本就可以了,MAC最新版+Xcode最新版本可以直接真机调试运行)+OS9.3系统iphone 说一下U3D,想要在ios上调试的话就要在下载的时候

第一人称射击游戏总结概览

这个游戏小项目为第一人称射击游戏 大概分为几个步骤: 一:主角的制作 1.控制主角移动的实现 要点: character Controller组件的理解 rigidbody组件的理解 colider与rigidbody的理解 用代码控制主角的移动——键盘交互的实现 //操作主角移动 //定义3个值控制移动 float xm = 0, ym = 0, zm = 0; //上下左右运动 if (Input.GetKey(KeyCode.W)) { zm += m_movSpeed * Time.de

unity3d游戏开发之第一人称射击游戏

简介 这个教程中,我们详细了解下如何制作一个简单的第一人称射击游戏(FPS).其中将介绍一些基本的3D游戏编程的概念和一些关于怎样如游戏程序员般思考的技巧. 前提 这个教程假定你已经熟悉软件Unity基本操作,掌握了基本的脚本概念. 创建新工程 下载FPS_Tutorial.zip压缩文件,解压,在Unity中打开工程文件. 从Unity安装目录导入Standard Assets资源包. 导入工程后,你会在Unity工程面板中的"Standard Assets"文件夹下看见这些资源内容

射击游戏---栈与子弹(2)

[栈]射击游戏1 Description 小明很喜欢玩射击游戏.他刚考完了数据结构期末考试,感觉不错,于是又来到了射击娱乐场放松一下.和上次一样,先从老板那租了一把步枪和装有N发子弹的弹夹.这里,再把规则说一遍.在射击的过程中,小明每次都有两种选择:从弹夹中取出一颗子弹上膛,或者打一发子弹出去.注意:所有的子弹都从枪口上膛.小明感觉这有点像<数据结构>课程中的“栈”的特点.因此在打完了这N发子弹之后,他想验证一下这些子弹打出来的顺序是不是真的满足“栈”的特性.假设N颗子弹的编号为1,2,…,N

Java Swing打猎射击游戏编程代码下载

代码下载地址:http://www.zuidaima.com/share/1858069987494912.htm 原文:Java Swing打猎射击游戏编程代码下载 这是一款java swing编写的打猎射击游戏,从这款游戏的编程中,我们可以练习如何进行射击对象的消失及相关按键的监听. 该游戏的一大亮点还是对运动图片的二级缓冲功能,运行时可以感受到非常的流畅,对于想从事游戏编程的人员来说是必须要掌握的一个技能点. 游戏操作:通过鼠标点击野猪和小鸟来是实现击中功能,子弹不足时提示"装载子弹...

【栈】射击游戏(待更新)

Description 小明很喜欢玩射击游戏.这周末,他完成了数据结构作业之后,又来到了射击娱乐场.他从老板那租了一把步枪和装有N发子弹的弹夹.注意:所有的子弹都从枪口上膛.在射击的过程中,小明每次都有两种选择:从弹夹中取出一颗子弹上膛,或者打一发子弹出去.恰巧,这周二,小明刚上了数据结构中<栈>那一章,于是,他想通过“栈”的数据结构来算出究竟有多少种不同的子弹打出顺序.假设N颗子弹的编号为1,2,…,N.子弹从弹夹中取出的顺序也是从1到N.你可以帮小明解决这个问题吗? Input 可能有多个

【栈】射击游戏1

Description 小明很喜欢玩射击游戏.他刚考完了数据结构期末考试,感觉不错,于是又来到了射击娱乐场放松一下.和上次一样,先从老板那租了一把步枪和装有N发子弹的弹夹.这里,再把规则说一遍.在射击的过程中,小明每次都有两种选择:从弹夹中取出一颗子弹上膛,或者打一发子弹出去.注意:所有的子弹都从枪口上膛.小明感觉这有点像<数据结构>课程中的“栈”的特点.因此在打完了这N发子弹之后,他想验证一下这些子弹打出来的顺序是不是真的满足“栈”的特性.假设N颗子弹的编号为1,2,…,N.子弹从弹夹中取出

使用Cocos2dx-JS开发一个飞行射击游戏

一.前言 笔者闲来无事,某天github闲逛,看到了游戏引擎的专题,引起了自己的兴趣,于是就自己捣腾了一下Cocos2dx-JS.由于是学习,所谓纸上得来终觉浅,只是看文档看sample看demo,并不会让自己有多大的提升,于是一开始就计划写一个小游戏,以作为自己完成这个阶段学习的一个标志,也算是目标导向吧.完整源码移步Github: https://github.com/RogerKang/JasonAmbitionOnline Demo: http://www.rogerkang.site: