精华内容
参与话题
问答
  • Project视图中创建一个新的文件命名为Platform,在文件夹中创建一个新的C#脚本名为PlatformManager,

    Project视图中创建一个新的文件命名为Platform,在文件夹中创建一个新的C#脚本名为PlatformManager,Project视图中创建一个新的文件命名为Platform,在文件夹中创建一个新的C#脚本名为PlatformManager,

    public class PlatformManager : MonoBehaviour
    {
        public Transform prefab;            //生成的背景对象的预设是需要知道的
        public int numberOfObjects;         //多少个Cube可以填充屏幕
        public Vector3 startPosition;       //生成Cube的起始位置
        private Vector3 nextPosition;       //即下一个Cube生成的位置,私有变量即可

        public float recycleOffset;          //距离多远才去重置循环,
        private Queue<Transform> objectQueue;   //还真有这个对列呀,先进先出集合对象。

        public Vector3 minSize, maxSize, minGap, maxGap;
        public float minY, maxY;
        // Use this for initialization
        void Start()
        {
            objectQueue = new Queue<Transform>(numberOfObjects);    //初始化一个容量
            nextPosition = startPosition;
            //为了使得代码重用,上面的for循环使用下面2个for循环代替!好吗???
            for (int i = 0; i < numberOfObjects; i++)
            {
                objectQueue.Enqueue((Transform)Instantiate(prefab));    //将对象插入到末尾
            }
            //上面一个for循环仅仅是把对象插入到队列里面去,而这个是要改变其位置的哦!
            for (int i = 0; i < numberOfObjects; i++)
            {
                Recycle();          //重置Cube的位置
            }
        }

        // Update is called once per frame
        void Update()
        {
            //移动的距离超出了就要出队列
            if (objectQueue.Peek().localPosition.x + recycleOffset < Runner.distanceTraveled)
            {
                Recycle();
            }
        }

        private void Recycle()
        {
            Vector3 scale = new Vector3(
                Random.Range(minSize.x, maxSize.x),
                Random.Range(minSize.y, maxSize.y),
                Random.Range(minSize.z, maxSize.z));
            Vector3 position = nextPosition;
            position.x += scale.x * 0.5f;
            position.y += scale.y * 0.5f;

            Transform go = objectQueue.Dequeue();   //出队列,即移除掉,并接受这个对象
            go.localScale = scale;
            go.localPosition = position;        //改变这个对象的位置
            objectQueue.Enqueue(go);                //最后添加到队列的尾部

            //重新设定下一个位置的点坐标
            nextPosition += new Vector3(
                Random.Range(minGap.x, maxGap.x) + scale.x,
                Random.Range(minGap.y, maxGap.y),
                Random.Range(minGap.z, maxGap.z));
            if (nextPosition.y < minY)              //如果小于最小值的话,
            {
                nextPosition.y = minY + maxGap.y;
            }
            else if (nextPosition.y > maxY)         //如果da于最大值的话,
            {
                nextPosition.y = maxY - maxGap.y;
            }
        }
    }

    跳跃与掉落

    你应该已经看到了,Runner掉落在平台上,然后向右移动,通过跳跃可以移动到其他平台上。但是,当碰撞到下一个平台边沿上就会发生一个怪异的行为——加速,这是因为我们一直在Update属性里不断变换它的位置,致使物理引擎的效果被一个施加的力所替代。

    我使用了两个Unity碰撞事件属性——OnCollisionEnter和OnCollisionExit,检测碰撞或离开平台的状态。只要我们接触到平台,就会加快移动的速度

    public class Runner : MonoBehaviour
    {
        public static float distanceTraveled;            //已经走过的距离

        public float acceleration;                      //加速度
        private bool touchingPlatform;                  //是否是碰到平台

        public Vector3 jumpVelocity;                    //跳跃的速度

     // Use this for initialization
     void Start () {
     
     }
     
     // Update is called once per frame
     void Update ()
        {
            //transform.Translate(5f * Time.deltaTime, 0f, 0f);       //沿着x轴的正方向移动

            if (touchingPlatform && Input.GetButtonDown("Jump"))
            {
                rigidbody.AddForce(jumpVelocity, ForceMode.VelocityChange);
                touchingPlatform = false;
            }
            distanceTraveled = transform.localPosition.x;
     }

        void FixedUpdate()
        {
            if (touchingPlatform)
            {
                rigidbody.AddForce(acceleration, 0f, 0f, ForceMode.Acceleration);
            }
        }

        void OnCollisionEnter()
        {
            touchingPlatform = true;
        }
        void OnCollisionExit()
        {
            touchingPlatform = false;
        }
    }

    原文地址:http://catlikecoding.com/unity/tutorials/runner/

    展开全文
  • 在使用状态机时,经常遇到配置好了必要组件,重力却失效的问题: 只需再完成下一步即可: 模型FBX——Animation——Curves: 添加 GravityWeight ,数值设为1.1,曲线设置为直线。 数值:因为测试发现,数值为1...

    在使用状态机时,经常遇到配置好了必要组件,重力却失效的问题:

    只需再完成下一步即可:

    模型FBX——Animation——Curves:

    添加 GravityWeight ,数值设为1.1,曲线设置为直线。

    数值:因为测试发现,数值为1时,有时只有在人物运动起来了,人物才往下掉,且掉的慢

    曲线:若状态为曲线,掉落会从慢到快,再从慢到快,一段一段地往下掉。

     

    展开全文
  • Unity's Rendering Pipeline

    2014-06-03 11:03:26
    Unity中的Render Path影响光源和阴影的处理。光源如何应用以及Shader中的哪个Passes被使用依赖于哪个Rendering Path被使用。Shader中的每一个Pass 通过Pass的Tags标签和他的光源类型相互通信。...

        Unity中的Render Path影响光源和阴影的处理。光源如何应用以及Shader中的哪个Passes被使用依赖于哪个Rendering Path被使用。Shader中的每一个Pass 通过Pass的Tags标签和他的光源类型相互通信。

     

         Unity支持3中渲染方式:

    (1)Vertex Lit Rendering path (定义了Vertex,VertexLMRGBM以及VertexLM 3种Pass)

    (2)Forward Rendering path(定义了ForwordBase和FowordAdd 2种Passes)

    (3)Deferred Rendering path(定义了PrepareBase和PrepareFinal 2种Passes)

     

    (一)Vertex Rendering Path(针对所有的PC/Mac平台,OpenGLES1.1和2.0设备)

         速度最快,硬件支持最广(console不支持).所有的光照基于顶点级别,这种渲染方式不支持逐像素的效果.例如:shadows,normal mapping,light cookies,highly detailed specular highlights是不支持的.

          Vertex Pass用于non-lightmapped objects,所有光源一次渲染,使用OpenGL和D3D中固定管线的光照模型(Blinn-Phong光照模型)

          VertexLMRGBM用于lightmapped objects,lightmaps使用RGBM压缩(针对大多数桌面设备和console),非实时光照,pass将纹理和lightmap相组合。

          VertexLMM针对lightmapped objects,lightmap使用2次LDR压缩(针对mobile和老的PC设备),非实时光源,pass将纹理和lightmap相组合。

     

     (二)Forward Rendering path(针对ShaderModel 2.0+的PC/MAC平台,OpenGLES2.0,以及PS3,360)

          对每个物体执行一次或者多次Pass的渲染,具体依赖于照射于物体的光源。

          最亮的几个光源使用per-pixel模式渲染,然后,最多4个点光源以per-vertex方式渲染,其余的光源以Spherical Harmonics方式渲染。

          一个光源是否是per-pixel的依赖于以下几条:

          1)光源设置的Render Mode被设置为Not Important的总是per-vertex或者SH模式渲染

          2)最亮的平行光源总是以per-pixel模式渲染。

          3)光源设置为Important的总是以per-pixel方式渲染

          4)如果以上符合条件的per-pixel光源的数量小于项目Quality Setting中的pixel Light Count的数量,更多的光源会以per-pixel模式渲染,为了减少整体亮度。

           渲染的顺序如下:

           1)Base Pass 针对一个Per-pixel的平行光源和所有per-pixel以及SH的光源(可以有阴影)

           2)剩下的其他per-pixel光源,在Additional Pass中渲染,每个Pass渲染一个光源。(不会产生阴影)

           *因此Foward Rendering 只支持一个带阴影的平行光源。

     

    展开全文
  • Unity 报错之 UnauthorizedAccessException

    千次阅读 2019-07-28 22:40:10
    UnauthorizedAccessException: Access to the path “/var/mobile/Containers/Data/Application/E9F05959-AC99-47EB-803F-3B4CE5C6673E/DocumentsHLJ_HUN_dRule.txt” is denied. at System.IO.FileStream…ctor ...

    Unity 报错: UnauthorizedAccessException

    报错原因:在iOS上错误使用直接使用Application.persistentDataPath此目录。

    错误使用方式:Application.persistentDataPath + gameType + “_dRule.txt”,,,此使用方式在Android移动端是没有问题的,也许是因为Android对权限要求没有那么严格。

    正确使用方式:Application.persistentDataPath + “/” + gameType + “_dRule.txt”,,,需加"/"作为子目录的转换。

    报错原文:

    UnauthorizedAccessException: Access to the path “/var/mobile/Containers/Data/Application/E9F05959-AC99-47EB-803F-3B4CE5C6673E/DocumentsHLJ_HUN_dRule.txt” is denied.
    at System.IO.FileStream…ctor (System.String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, Boolean anonymous, FileOptions options) [0x00000] in :0
    at System.IO.FileInfo.Open (FileMode mode, FileAccess access, FileShare share) [0x00000] in :0
    at System.IO.FileInfo.CreateText () [0x00000] in :0
    at CreateTableCtrl.CreateRoom (GAME_KIND gameType) [0x00000] in :0
    at UnityEngine.EventSystems.ExecuteEvents.Execute[T] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.EventFunction1 functor) [0x00000] in <filename unknown>:0 \ at UnityEngine.EventSystems.StandaloneInputModule.ProcessTouchPress (UnityEngine.EventSystems.PointerEventData pointerEvent, Boolean pressed, Boolean released) [0x00000] in <filename unknown>:0 \ at UnityEngine.EventSystems.StandaloneInputModule.ProcessTouchEvents () [0x00000] in <filename unknown>:0 \ at UnityEngine.EventSystems.StandaloneInputModule.Process () [0x00000] in <filename unknown>:0 \ UnityEngine.EventSystems.ExecuteEvents:Execute(GameObject, BaseEventData, EventFunction1)
    UnityEngine.EventSystems.StandaloneInputModule:ProcessTouchPress(PointerEventData, Boolean, Boolean)
    UnityEngine.EventSystems.StandaloneInputModule:ProcessTouchEvents()
    UnityEngine.EventSystems.StandaloneInputModule:Process()\

    展开全文
  • unity 旋转问题

    2018-10-10 08:52:05
    即Transform.Rotation: x,z以自身坐标进行旋转,y 以世界坐标进行旋转
  • 龙骨 龙骨是Egret公司的一个用来做动画的软件,本文分享一下如何在Unity2D中使用龙骨导出的2D动画 导出动画 在龙骨中文件->导出,导出动画数据和纹理到Unity的项目中,如果打包了的话就在Unity的项目的目录下...
  • Unity Sharder Graph_溶解

    2020-04-03 11:04:31
    1.创建shader 2.创建一个噪声节点连接到阿尔法 将比例设置为40左右 (可以添加向量在面板上控制噪声密度) 并在材质设置里的表面设置为透明 ...3.创建一个时间节点从这里用时间的节点的正弦 然后将其重新映射 ...
  • C#之Unity缓存池

    2020-04-02 13:25:50
    首先创建一个单例,因为缓存池是唯一的 public class Ceshidanli<T> where T :new() { static T Inseter; public static T Fanhuizhi() { if(Inseter == null) ... Inseter = new T();... ...
  • unity如何播放父级的父级物体所绑定的动画功能
  • Unity3D 中旋转和变换

    万次阅读 2014-03-10 09:42:15
    Transform 变换,是场景中最常打交道的类,用于控制物体的位移,旋转,缩放等功能。 Transform Class, inherits from Component, IEnumerable ...Position, rotation and scale of an object. ...
  • 一、Unity 3D中的 GameObject.SetActive() 与 MonoBehaviour.OnEnable()、MonoBehaviour.OnDisable() 其实这三之前的关系很简单: SetActive(true),很触发MonoBehaviour.OnEnable()事件,就算对象之前本就是...
  • Unity3d 周分享(10期 2019.1.19)

    千次阅读 2019-01-19 21:13:15
      1)、 Unity的库: 2D PSD Importer 有了它,当导入psd 文件时, 文件会自动转为sprite文件并且散图都切完的。 ...这样精灵锁片的层级顺序也保存着,可能各个部位的位置也不用调整了。...【主要是针对2d游戏,2d...
  • Unity3d 周分享(20期 2019.6.30 )

    千次阅读 2019-06-30 15:03:41
    选自过去1~2周 自己所看到... 1、Unity的Android音频延迟在2019.1.0 中改进 https://gametorrahod.com/unitys-android-audio-latency-improvement-in-2019-1-0/ 文章作者因为这个延迟问题,弄了一个,正是基于Op...
  • 挑自己感兴趣的看吧~ https://unite.unity.com/ ================================哥本哈根======================================== https://www.slideshare.net/unity3d/presentations ...Unite C...
  • Vuforia学习推荐

    千次阅读 2016-06-20 14:11:07
    高通 Vuforia * 最近关注了一下高通的Vuforia,这里提供一下学习的网址。 大家没事的时候,多看看高通官方论坛哦,会有不少收获!地址在这里:高通官方论坛 下面,分享一下找到的精华,希望对大家有所帮助;...
  • Unity制作图集

    千次阅读 2018-03-22 16:43:20
    一、UGUI制作图集 UGUI如果将会自动打包图集,Project Seting &gt;&gt;Editor&gt;&gt;Sprite Packer的Mode需要设置为Always Enabled ...1.1选择一张图片,将其Texture Type 设置为Sprite,UGUI是自动...
  • 结论: FixedUpdate频率固定更新,通常更新物理逻辑 Update每帧更新,通常更新输入 LateUpdate是在所有更新种类的最后更新 尽量少用Update,不然顺序不好掌控。而更新实在无法掌控的时候,用Script Excution Order ...
  • GameObject.ToString 返回层级中的名字 using System.Collections; using System.Collections.Generic; using UnityEngine; public class UnityGameOject : MonoBehaviour { void Start() ......
  • unity中向量相加的实现 public Transform pos1; public Transform pos2; private void Update() { transform.position = (pos1.position + pos2.position); } 图示 List item 代码图 ...结果图
  • 之前有个需求 屏幕上用鼠标拖动然后就能射出箭 箭随着标线运动 之前想麻烦了 以为贝塞尔曲线能够完成 后来发现 完全不对劲 直接运用最基础的物理知识即可 例如 要实现曲线运动 给定一个点 pos和 方向 dir ...
  • 在unity开发中我们经常会遇到一些错误,某些错误是因为运行平台的原因,我刚刚就遇到一个坑,在电脑上调试的时候没问题,打包成apk之后在手机上打开就出问题了,我找错误的办法是,在界面加一个Text控件,然后通过...
  • 当角色或者摄像机靠近门的时候,门自动打开,离开门自动关上。 步骤一:制作铰链和门 首先在你的场景中建立一个立方体,然后缩小放到门的左面,命名为 Door Hinge ...现在,在你的 Hierarchy 中就能看到 Door 和 ...
  • 环境:Unity开发时会有很多的Debug.log输出测试 问题:最后游戏发布的时候,不希望在Produce发布环境也输出大量的日志,官方目前也没有正统的做法。 解决方法1: 重新封装 将Debug.log重新封装,自己添加开关。...
  • Failed running UnityLinker.exe解决方案: 解决方案: 其实很简单,第一种方法就是:只需要删除 Library文件夹,重新初始化整个项目,重新打开unity即可;第二种就是用版本管理工具svn还原到项目初始位置,然后重新...
  • 原文链接:https://stackoverflow.com/questions/55535177/omnisharp-msbuild-projectmanager-attempted-to-update-project-that-is-not-loaded I solved this issue by doing the following on VSCode: ...
  • You are trying to read Input using the UnityEngine.Input class, but you have switched active Input handling to Input System package in Player Settings 编辑->项目设置->Player->...
  • leancloud,国内版, 访问时提示Curl error 51: Cert verify failed: UNITYTLS_X509VERIFY_FLAG_EXPIRED 原因是:绑定域名中的SSL过期了。 解决方法是在 leancloud的应用设置->域名绑定中,将绑定的域名设置为...
  • Unity3D 导入&quot;Unity-Chan!&quot; Model 后报错 error: CS0234 The type or namespace name ‘xxx’ does not exist in the namespace ‘xxx’ (are you missing an assembly reference?...
  • 多个System.Drawing.dll文件引用 error CS1703: Multiple assemblies with equivalent identity have been imported: 'O:\UnityProjects\EmotionFacialRecognition\EmotionDetectionAsset_UnityDemo-master\Assets...
  • 我在导入某个插件后引起了这个问题。 当然,并不是忘记写UnityEngine.UI引起的。 解决后才想着来记录一下,因此没有报错时的截图,不过问题表现为所有的UnityEngine.UI的引用都报标题的错误。...

空空如也

1 2 3 4 5 6
收藏数 108
精华内容 43
关键字:

unitys 扇形射线碰撞