2019-08-20 11:20:30 weixin_38744526 阅读数 10689
  • unity3D游戏/AR/VR在线就业班

    本套课程是一套完整的 Unity3D-游戏/AR/VR 学习课程,具体的课程内容包括《C#语言》、《Unity引擎》、《编程思想》,《商业级项目实践》等开发课程,引导您一步步循序渐进、由易到难,终获得Unity 3D/游戏/AR/VR工程师的岗位技能。

    12792 人正在学习 去看看 宋晓波

最近在写论文做毕业设计,真是一个头两个大。写过论文的伙伴一定都懂,头发一撮一撮地掉,好心痛!

我的毕设需要用到树莓派编程然后转接到Unity3D利用多媒体投影显示内容,这中间需要用到网络通信多线程。

查了一些资料,决定选择Python Socket来实现功能。Socket是任何一种计算机网络通讯中最基础的内容,网上也能查到好多Python Socket 套接字编程的指南和教程。

不过,教程太多弄得我眼花缭乱,也没明白Socket通信多线程是咋回事,偶然发现了一个讲Python 多线程的小视频,我觉得讲的超详细,很容易懂,特来分享给大家~

如果你也想知道Python多线程是怎么实现的,跟我一起看看下方视频,听知名技术专家李刚老师对Socket多线程和Python的TCP支持与创建TCP服务端的详细解析,

并发编程+网络编程

李刚老师出版的《疯狂java》体系图书曾得到市场的广泛认可,经过多次再版,并被多家高校选作教材。上方视频来自于李刚老师的在线视频课程《21天通关Python》第八章 并发编程+网络编程

鉴于大家都有学习Python的困惑,今天就给大家推荐一本巨有影响力的Python实战书,上线时间仅2个月,就超越了众多实力派,成京东和当当网上的长期畅销图书,并且收获了3.4W的五星好评。

这本书可谓是笔者独家私藏图书之一了,对我学习Python有着莫大的帮助,在京东上也常常"断货",这次拿出来给大家分享一下,希望能帮到大家。

《21天通关Python》视频课程以畅销图书为教材,由图书作者李刚亲自操刀讲解;上手门槛低,可作为0基础掌握Python教材;书籍+线上复合型学习场景特别适合Python小白学习!

点此查看课程:https://edu.csdn.net/bundled/detail/49?utm_source=jiansuopy58_1
(含图书邮寄+视频教程+社群答疑+导师带队)

笔者跟大家分享一个福利!下单时输入优惠码csdn66,立减20元,券后仅需99元
扫码入Python技术交流群,可免费听技术讲座+领学习资料+视频课免费看
在这里插入图片描述

2019-12-18 22:49:50 zhunju0089 阅读数 53
  • unity3D游戏/AR/VR在线就业班

    本套课程是一套完整的 Unity3D-游戏/AR/VR 学习课程,具体的课程内容包括《C#语言》、《Unity引擎》、《编程思想》,《商业级项目实践》等开发课程,引导您一步步循序渐进、由易到难,终获得Unity 3D/游戏/AR/VR工程师的岗位技能。

    12792 人正在学习 去看看 宋晓波

1.顶部菜单栏 Window>Asset Store 打开资源商店

2.搜索 fps microgame

3.下载并且导入 fps microgame

4.最后运行

 

2019-09-03 22:06:47 weixin_44831924 阅读数 422
  • unity3D游戏/AR/VR在线就业班

    本套课程是一套完整的 Unity3D-游戏/AR/VR 学习课程,具体的课程内容包括《C#语言》、《Unity引擎》、《编程思想》,《商业级项目实践》等开发课程,引导您一步步循序渐进、由易到难,终获得Unity 3D/游戏/AR/VR工程师的岗位技能。

    12792 人正在学习 去看看 宋晓波



      射击游戏中,很难预计子弹打到哪里,毕竟肉眼估算枪管的角度不容易,所以很难打着。因此需要制作一套准心,让它来捕捉敌方的位置。此处射击游戏以坦克开炮为例,那么射击所用的便不是枪管,而是炮管了,射出来的不是子弹,而是炮弹了。坦克开炮所制作的准心中心准心坦克准心两部分组成。

中心准心

       中心准心指向屏幕中央。中心准心的坐标是固定的,假设屏幕宽度为Screen.width、屏幕高度为Screen.Height、准心宽度为centerSight.width,准心高度为centerSight.height,那么中心的坐标为(Screen.width/2 - centerSight.width/2,Screen.height/2 - centerSight.height/2)。如下图:
在这里插入图片描述

实际射击位置

       实际射击位置指炮弹爆炸的位置。获取实际射击位置的方法如下:过炮管中心点,,以炮管方向作一条足够长的射线来模拟炮弹的飞行路线,检测射线与场景中游戏物体的碰撞点,该碰撞点为实际爆炸的位置,如下图所示:
在这里插入图片描述

目标射击位置

       目标射击位置指中心准心所对应的三维坐标,如下图。获取该值的方法如下:过屏幕中心做一条沿着相机方向的射线,检测射线与场景中游戏物体的碰撞点。该碰撞点即为目标射击位置。随着炮塔和炮管的旋转,实际射击位置会慢慢向目标射击位置靠近,直到两者重合。Unity3D中Camera.ScreenPointToRay方法能够将屏幕位置转成一条射线,后续将用该方法生成射线并检测碰撞点。
在这里插入图片描述

坦克准心

       坦克准心指向“实际射击位置”转换成的屏幕坐标,如下图。Unity3D的Camera.main.WorldToScreenPoint方法提供了三维坐标到屏幕坐标的转换,后续将使用该方法计算坦克准心的坐标。
在这里插入图片描述

       了解上述概念后,可以从3方面逐步完成准心功能:

  1. 计算“目标射击位置”。然后根据“目标射击位置”,计算炮管和炮塔的目标角度,旋转炮管和炮塔。
  2. 计算“实际射击位置”,然后根据“实际射击位置”计算“坦克准心”的坐标。
  3. 在OnGUI方法中绘制准心。
2014-10-26 20:24:47 u014749760 阅读数 1916
  • unity3D游戏/AR/VR在线就业班

    本套课程是一套完整的 Unity3D-游戏/AR/VR 学习课程,具体的课程内容包括《C#语言》、《Unity引擎》、《编程思想》,《商业级项目实践》等开发课程,引导您一步步循序渐进、由易到难,终获得Unity 3D/游戏/AR/VR工程师的岗位技能。

    12792 人正在学习 去看看 宋晓波
unity3d 第一人称射击游戏 Demo
2019-08-28 16:32:00 shenqiankk 阅读数 905
  • unity3D游戏/AR/VR在线就业班

    本套课程是一套完整的 Unity3D-游戏/AR/VR 学习课程,具体的课程内容包括《C#语言》、《Unity引擎》、《编程思想》,《商业级项目实践》等开发课程,引导您一步步循序渐进、由易到难,终获得Unity 3D/游戏/AR/VR工程师的岗位技能。

    12792 人正在学习 去看看 宋晓波

知识点:

  1. 刚体组件(rigidbody),受力和碰撞的组件
  2. 触发器(Trigger),开启后物体碰撞效果取消,但仍会返回碰撞消息
  3. 复制物体对象:var box = Instantiate(对象);
  4. 设置对象坐标位置:box.transform.position = new Vector3(三维坐标点);
  5. 绘制光标:绘制是从左上角为原点开始绘制,为了在准心射击,坐标点做些偏移。
    Cursor.SetCursor(MyCursor, new Vector2(MyCursor.width / 2, MyCursor.height / 2), CursorMode.Auto);
  6. 判断按键:Input.GetButtonDown(按键);
  7. 获取屏幕射线对象:Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
  8. 判断射线的物理碰撞:
    Physics.Raycast(射线对象,out 碰撞物体, 射线最长距离)
    Physics.Raycast(ray,out Hit, 50)
  9. 给物体速度、方向:射线碰撞坐标和子弹当前坐标只差形成一个向量,确定速度方向,然后乘上速度大小
    物体对象.GetComponent<Rigidbody>().velocity = 速度方向 * 速度大小;
    bullet.GetComponent<Rigidbody>().velocity = (Hit.point - bullet.transform.position) * 5;

步骤:

  1. 准备物体和子弹、地板,物体和子弹存储对象后,就可以删掉
    子弹和物体都要添加刚体组件
    在这里插入图片描述

  2. 创建GameObject对象,存储脚本
    在这里插入图片描述
    在这里插入图片描述

  3. 设置对象变量,把物体对象赋值给变量
    在这里插入图片描述
    在这里插入图片描述

  4. 设置Quad墙体,这样鼠标点击任何位置都会触发射线碰撞事件
    在这里插入图片描述
    取消墙体渲染,这样墙体就是透明效果。
    开启触发器,这样子弹就不是撞墙,会穿过墙体。
    在这里插入图片描述

  5. 设置光标,找一张透明底的贴图,设置成光标,再赋值给脚本变量
    在这里插入图片描述

  6. 优化项目:删除摄像机视野外的物体对象,节省资源。删除脚本添加在物体内。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述


脚本代码

HitPlayGame.cs

public class HitPlayGame : MonoBehaviour
{
    //箱子
    public GameObject Box;
    //球体(子弹)
    public GameObject Bullet;
    //光标
    public Texture2D MyCursor;

    // Start is called before the first frame update
    void Start()
    {
        for(int i = 0; i < 5; i++)
        {
            for(int j = 0; j < 5; j++)
            {
                //复制物体对象,并返回该物体对象,参数:被复制的对象
                var box = Instantiate(Box);
                
                //设置物体的位置
                box.transform.position = new Vector3(-2f+i, 0.5f+j, 4.5f);
            }
        }

        //绘制光标
        Cursor.SetCursor(MyCursor, new Vector2(MyCursor.width / 2, MyCursor.height / 2), CursorMode.Auto);
    }

    // Update is called once per frame
    void Update()
    {
        //按一下鼠标左键,发射一次子弹
        if (Input.GetButtonDown("Fire1"))
        {
            ////复制物体对象,并返回该物体对象,参数:被复制的对象
            var bullet = Instantiate(Bullet);
            
            //设置物体的位置
            bullet.transform.position = Camera.main.transform.position;
            
            //获取屏幕射线对象
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            
            //碰撞物体变量
            RaycastHit Hit;
            
            //判断射线是否有碰撞对象
            if(Physics.Raycast(ray,out Hit, 50))
            {
                //给子弹对象一个方向和速度
                bullet.GetComponent<Rigidbody>().velocity = (Hit.point - bullet.transform.position)*5;
            }
        }
    }
}

DestoryObj.cs

public class DestoryObj : MonoBehaviour
{
    /// <summary>
    /// 超出摄像机视野执行
    /// </summary>
    private void OnBecameInvisible()
    {
        //删除对象
        Destroy(gameObject);   
    }
}
没有更多推荐了,返回首页