2021
04-27
04-27
解决unity rotate旋转物体 限制物体旋转角度的大坑
今天可是遇到一个很简单的需求,但是却让我蛋疼了半天。滑动屏幕控制物体旋转,但是旋转的角度要在-60到60之间。乍一听这简直是小儿科啊。判断一下角度不就行了。相比这四元数,欧拉角虽然有时会出现万向锁,但是简洁明了啊。这不,我就中了一个简洁明了的大坑。图中,如果你以为transform.eulerAngles=(-1,0,90)那就大错特错了。因为对于旋转来说。360度是一个循环。-1°也可以算是就是359°而且unity就是这样认为的。面板上虽...
继续阅读 >
将脚本挂在要判断声音是否播放完毕的物体上usingSystem.Collections;usingUnityEngine;usingUnityEngine.Events;[RequireComponent(typeof(AudioSource))]publicclassAudioManager:MonoBehaviour{publicstaticAudioManagerinstence=null;privateAudioSource_audio;voidAwake(){if(instence==null){instence=this;}}voidStart(){_audio=GetComponent<AudioSource>();}voidUpdate(){//按下键盘按钮A键...
我就废话不多说了,大家还是直接看代码吧~privateLineRendererline1;//画线line1=this.gameObject.AddComponent<LineRenderer>();//只有设置了材质setColor才有作用line1.material=newMaterial(Shader.Find("Particles/Additive"));line1.SetVertexCount(2);//设置两点line1.SetColors(Color.yellow,Color.red);//设置直线颜色line1.SetWidth(5f,10f);//设置直线宽度//设置指示线的起点和终点line1.SetPo...
我就废话不多说了,大家还是直接看代码吧~privateLineRendererline;//画线line=this.gameObject.AddComponent<LineRenderer>();//只有设置了材质setColor才有作用line.material=newMaterial(Shader.Find("Particles/Additive"));line.SetVertexCount(2);//设置两点line.SetColors(Color.yellow,Color.red);//设置直线颜色line.SetWidth(0.01f,0.01f);//设置直线宽度//设置指示线的起点和终点line.SetPosition(0,initPo...
下面先看一下效果图usingUnityEngine;usingSystem.Collections;publicclasstextMesh:MonoBehaviour{publicMaterialmeshRender=null;publicRendererrend;publicTexturetexture;voidStart(){//把名字为bangongshi4的材质球放到Resources文件夹下meshRender=Resources.Load("bangongshi4")asMaterial;if(meshRender==null){Debug.Log("111111111...
LineRenderer(线条渲染器)这个组件可以在场景中渲染出"线",比如说:做出手枪瞄准敌人时有红外线的射击辅助线,可以用LineRenderer来完成不过这个组件对新手还是有些不友好的,看到下面的属性就头大,不过掌握了基本用法之后就没什么难度了,下面讲解一下属性(我用的Unity是2018.3.8版)首先看一下Positions属性这是画线的核心俩点(或多个点)连一线,一个物体只能带有一个LineRenderer组件,一个LineRenderer组件只能渲染一条连续的线Size...
1、实现UI的变色设置HighlightedColor为鼠标经过时变的颜色(Normal为常态,Pressed为按下时的颜色,Disabled为禁止的颜色)2、通过代码实现物体的颜色改变usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;publicclassCube_change:MonoBehaviour{privateColorCubeColor;privateTextureCubeTexture;publicGameObjectobjCube;//UsethisforinitializationvoidStart()...
关于Unity的换装,网上有几篇文章,我之前也简单的描述过实现。不过那个时候只是粗略的试验了下。今天好好梳理了下代码。先上代码(自己的游戏项目,不是公司的,所以放心的贴上项目代码了,部分引用到其他的功能文件,但是核心代码无影响,这里主要看一下细节和思路)usingUnityEngine;usingSystem.Collections;usingSystem.Collections.Generic;publicenumAvatarPart{helmet,chest,shoulders,gloves,b...
Unity如何实现换装系统,供大家参考,具体内容如下1.创建SpriteLibraryAsset2.添加新目录Label可以理解为标签,在代码调用过程中使用,将该部位装备图片拖入Sprite中3.添加组件给需要换装的部位添加SpriteResolver组件(如头部换装,就在头部对象挂载组件)选择目录名,就会出现之前LibraryAsset中拖拽的图片内容,点击不同图片可以预览效果(如果出现装备位置偏移,需调整图片的pivot)4.通过代码实现换装小笔记:1).UnityE...
在有些需求中会遇到,当鼠标滑过某个UI物体上方时,为了提醒用户该物体是可以交互时,我们需要添加一个动效和提示音。这样可以提高产品的体验感。解决方案1、给需要有动画的物体制作相应的Animation动画。(相同动效可以使用同一动画复用)2、给需要有动画的物体添加脚本。脚本如下:usingSystem;usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;usingUnityEngine.EventSystems;publicclassOnBt...
外部调用show和Hide方法usingDG.Tweening;usingUnityEngine;usingUnityEngine.UI;publicclassShowInfo:MonoBehaviour{privatebool_isshowing=false;publicCanvasCanvas;//UsethisforinitializationvoidStart(){Hide();}//UpdateiscalledonceperframevoidUpdate(){}publicvoidHide(){transform.DOScale(Vector3.zero,0.3f);...
项目有个需求,一整段非常长的Animator动画,分割成一份份的播放,我们点击相应的按钮就播放某个时间点的动画,废话不多说新建一个空物体加上togglegroup,下面是一堆的toggle并在Group里加上父亲privateAnimatormyAnimator;publicList<Toggle>myTogglesList;privatefloatplayTime;publicvoidAwake(){myAnimator=GameObject.Find("XXX/xxx").GetComponent<Animator>();myTogglesLis...