unity3d

【3D游戏编程与设计-HW2】离散仿真引擎基础

人盡茶涼 提交于 2020-10-14 00:50:32
离散仿真引擎基础 简介 简答题 编程实践,小游戏 思考题(选做) 简介 学习3D游戏编程与设计的第二讲《离散仿真引擎基础》。下载试用了软件Unity3D,完成制作小游戏井字棋。 本博客分为三部分: 简答题 编程实践:小游戏《井字棋》 思考题 简答题 1. 解释游戏对象(GameObjects) 和 资源(Assets)的区别与联系。 游戏对象表示某些资源的具体实例化,出现在游戏的场景中,游戏对象一般有敌人,场景,摄像机等非实体虚拟父类,子类一般为游戏内的实体 ; 资源表示硬盘中的文件,存储在Unity工程的Assets文件中,资源可以被多个对象使用,也可以作为模板实例化成游戏内的实体,一般划分为材质,对象,场景,预设,声音,脚本,贴图等子文件夹中。 区别:游戏对象是具有一定属性与功能的类的实体化,对应为Unity中具有对应职能与属性的组件,例如游戏中常见的玩家、怪物等;资源是预先准备好的模型、图片、音乐等,可以直接并重复使用 联系:资源可以添加到游戏对象作为其一部分,而游戏对象可以保存作为一种资源以便捷地重复使用 2. 下载几个游戏案例,分别总结资源、对象组织的结构(指资源的目录组织结构与游戏对象树的层次结构) 从 资源网站 下载游戏愤怒的小鸟、赛车游戏、2048游戏、像素鸟游戏等资源后,进行总结后,这里以愤怒的小鸟为例。 游戏资源的目录组织结构一般包含:Animation

UnityWebRequest发送json串过长导致unity收不到服务器的响应

谁说我不能喝 提交于 2020-10-13 13:45:27
最近使用UnityWebRequest发送很长的json串给服务器,服务器已经收到客户端的数据,并且成功处理了并返回给客户端数据,但是unity这边,就一直没有收到响应,使用postman 测试,一切正常, string fasongContent = JsonMapper.ToJson(m); fasongContent = Unicode2String(fasongContent); print(fasongContent); UnityWebRequest request = new UnityWebRequest("http://", UnityWebRequest.kHttpVerbPOST); request.uploadHandler = (UploadHandler)new UploadHandlerRaw(Encoding.UTF8.GetBytes(fasongContent)); request.useHttpContinue = false; request.downloadHandler = (DownloadHandler)new DownloadHandlerBuffer(); request.SetRequestHeader("Content-Type", "application/json"); request.SetRequestHeader(

ML-Agents(六)Tennis

吃可爱长大的小学妹 提交于 2020-10-13 10:00:09
目录 ML-Agents(六)Tennis 一、Tennis介绍 二、环境与训练参数 三、场景基本结构 四、代码分析 环境初始化脚本 Agent脚本 Agent初始化与重置 矢量观测空间 Agent动作反馈 Agent手动操控 五、训练 普通训练(不带可变参数) 可变参数设置 一个可变参数训练 两个可变参数训练 总结 ML-Agents(六)Tennis 喜欢的童靴希望大家多多点赞收藏哦~ 这次Tennis示例研究费了我不少劲,倒不是因为示例的难度有多大,而重点是这个示例的训练过程中遇到了许多问题值得记录下来,其次这个训练是一个 对抗训练 ,也是比较有意思的示例。 一、Tennis介绍 首先来看看效果~ OK,可以看到画面中有18个网球场,然后蓝色的球拍和紫色的球拍互相对打。这里注意一下,场景虽然都是3D的,但实际上球拍和球只在球场的中轴线上上下左右移动,也就是说其实换个相机位置的话,这里其实是个二维打球模拟。 当然了,这样算是简化了训练的过程,这个示例大部分所用到的内容和3D Ball差不多,主要有一个可以深化学习的就是 对抗训练 。下面我们来先看一下官方对该示例的参数。 二、环境与训练参数 老规矩,先来看一下官方文档参数: 设定:两个agents控制球拍进行双人游戏,来回击打球过球网 目标:一方agent必须打击球,以使对手无法击回球 Agent:在这个环境中

Unity 角色攻击

北城以北 提交于 2020-10-09 04:49:54
//=========================按下J键进行攻击==================================== if ( Input . GetKeyDown ( KeyCode . J ) ) { //切换到攻击的动画 anim . SetTrigger ( "Launch" ) ; //实例化一个武器 GameObject bullet = Instantiate ( bulletPrefab , rbody . position + Vector2 . up * 0.5f , Quaternion . identity ) ; //获取这个实例化后的武器身上的BulletController脚本 BulletController bc = bullet . GetComponent < BulletController > ( ) ; if ( bullet != null ) { //播放攻击音效 AudioManager . instance . AudioPlay ( launchClip ) ; //调用这个武器的BulletController的Move方法,令这个武器产生移动. bc . Move ( lookDirection , 300f ) ; } } 来源: oschina 链接: https://my.oschina

unity3D之实现一个简单的UI框架

别来无恙 提交于 2020-10-08 09:43:32
写在前面的话 我会先把源码直接给出来。博主本身也不是什么大牛,所以写的也不是什么很厉害的框架,只是一个很小很小的UI框架,给初学者一点入门的思路。 很多人在刚开始接触框架的时候都会有一种感觉:这NM什么DDX啊?!完全懵逼了有没有?!我还没开始写代码呢!怎么就已经有这么多代码要看啊?!还有大部分新人都会吐槽的事情:为什么要这么写啊?这玩意随便写个脚本挂上去不是分分钟实现功能吗?你这绕来绕去搞毛?这个主程是不是NT?!emmmmmmmmmmm…如果你知道主程怎么想的,你不就是主程了? 所以,初次接触框架的话,可以抱怨,但是请尽快冷静下来,好好看代码。起码要以最快的速度会用这个框架,在慢慢去分析为什么框架要这么写。其实看完后你就会发现,主程写的框架实现一个功能确实很麻烦,但是你用起来的时候却非常方便,因为很多东西主程早早的就给你封装在框架里了,你只需要干一些不动脑子的体力活就实现了需求,爽就一个字!这就是为什么要使用框架,为什么主程要弯弯绕绕的实现功能。 好,如果你做好了思想准备,那么就先下载源码,读起来吧!这真的是一个很简单的UI框架,内容不多。读起来应该很容易。 UIFrame 提取码:gt4a 那接下来我们就开始吧! 初次接触框架的读者可能会完全不知道从哪里下手阅读,那么博主就带着大家一起看看,这个框架主要是用来解决什么问题的。 脚本文件夹结构 这个框架有五个基本文件夹,分别是

Unity 游戏中 排序算法和查找算法记录

霸气de小男生 提交于 2020-10-07 09:56:03
排序和查找算法那麽多,但是那些方法更好? 那些方法更有优势? 自己应该主要掌握那几张算法 ? 或者自己当前的数据应该怎么排序或者查找? 今天我们来对应一个实际问题来搭配使用排序算法以及查找算法,来简单的通过几个搭配案例来解答这些问题。 1. 首先在我们先讨论一下几种排序方法的时间复杂度和空间复杂的。通过此图你能直接的了解,那种情况下使用哪一种方式 。 1. 提示:时间复杂度,准确来说是描述一个算法在问题规模不断增加时对应的时间增长曲线。 比如: 要找一个数组里面最大的一个数,需要把这个数组的n个变量遍历一遍,操作次数为n,那么这个算法的复杂度就是O(n)。 那么要用冒泡排序一个数组,那么对于n个变量的数组,不仅要遍历数组,还要对比每个n,然后再进行交换位置变量n的平方,记作 n 2 n^2 n 2 。 有时候我们对变量操作的次数是个多项式比如 n 4 n^4 n 4 + n 2 n^2 n 2 +n ,你那就取数量级最大的那个,那就是记作 O( n 4 n^4 n 4 ) 然后由图可知, 相对稳定的排序算法有: 冒泡, 插入,基数,归并。其中最常用的就是冒泡,他可以处理许多轻量级的数据,那数据一旦过大,问题规模n增加,那么使用稳定的归并比较好 2. 提示:空间复杂的呢。和时间复杂度的逻辑是一样的。只是时间复杂度是针对时间的,而空间复杂度是指运行完一个程序所需要的内存的大小 2.

Unity 做触摸 像弹簧一样的旋转

拜拜、爱过 提交于 2020-10-07 09:55:53
using System ; using UnityEngine ; using UnityStandardAssets . CrossPlatformInput ; public class SimpleMouseRotator : MonoBehaviour { // A mouselook behaviour with constraints which operate relative to // this gameobject's initial rotation. // Only rotates around local X and Y. // Works in local coordinates, so if this object is parented // to another moving gameobject, its local constraints will // operate correctly // (Think: looking out the side window of a car, or a gun turret // on a moving spaceship with a limited angular range) // to have no constraints on an axis, set the rotationRange

Unity 做触摸 像弹簧一样的旋转

倖福魔咒の 提交于 2020-10-07 09:55:36
using System ; using UnityEngine ; using UnityStandardAssets . CrossPlatformInput ; public class SimpleMouseRotator : MonoBehaviour { // A mouselook behaviour with constraints which operate relative to // this gameobject's initial rotation. // Only rotates around local X and Y. // Works in local coordinates, so if this object is parented // to another moving gameobject, its local constraints will // operate correctly // (Think: looking out the side window of a car, or a gun turret // on a moving spaceship with a limited angular range) // to have no constraints on an axis, set the rotationRange