一些小细节
文章平均质量分 60
平民小老百姓
脚踏实地,为了自己
展开
-
游戏中自动攻击最近目标、二次连击和群体攻击的大体代码思路
通常我们玩GTA系列,暗黑血统系列,虐杀原形等电脑打斗游戏时,都是主角跟着鼠标转向来攻击的。这意味着要我们自己去寻找目标。但是移动设备不像laptop或者座机那样操作方便,所以最近目标攻击在移动设备是很常用的。下面给出攻击最近目标的主要代码和部分解释: public float attackRange = 30; public float attac原创 2016-08-27 14:42:48 · 3769 阅读 · 0 评论 -
角色选择界面角色与鼠标的旋转交互
这里的脚本要实现的功能是在角色选择界面,人物3D模型自动旋转,然后鼠标在角色身上向左拖拽,角色往左旋转;向右拖拽,角色向右旋转,拖拽后角色旋转方向与退出拖拽时,鼠标的移动方向一致。单击人物则停止旋转。下面是脚本,这里不作过多解释:using UnityEngine;using System.Collections;public class OnCharacterClick原创 2016-09-24 23:03:52 · 1587 阅读 · 0 评论 -
RPG类游戏主角移动的代码
本来RPG类游戏主角移动的代码没什么特别,这里要指出的是在使用character.simpleMove(moveSpeed * transform.TransformDirection(new Vector3(0, 0, 1)))来移动,但是当角色在斜坡上由于角色角度的变化而会出现方向改变不能直接到达目的地的问题。这个问题我尝试了好多方法,但是由于自己判断不准确,好久都没有解决。所以找原创 2016-09-27 10:27:11 · 4133 阅读 · 1 评论 -
Unity3D中Animation的常见属性及方法
Animation.Play播放function Play (mode : PlayMode = PlayMode.StopSameLayer) : boolfunction Play (animation : string, mode : PlayMode = PlayMode.StopSameLayer) : boolPlay()将开始播放名称为animation转载 2016-10-12 21:04:46 · 9532 阅读 · 0 评论 -
Unity设置鼠标指针图片
下面是程序中动态变化鼠标图片的代码。using UnityEngine;using System.Collections;public class CursorManage : MonoBehaviour { static CursorManage _instance; public static CursorManage Instance {原创 2016-09-27 17:57:05 · 7892 阅读 · 0 评论 -
Unity3D控制人物移动跳跃,处理CharacterController的isGrounded总是返回false问题
在Unity3D中控制人物移动的方法很多,可以使用transform.Translate方法,但为了不穿越其他物体,需要使用刚体rigidbody。还可以使用角色控制器,角色控制器是自带刚体Rigidbody和碰撞器Collider的,移动可以使用CharacterController组件。在使用CharacterController组件实现跳跃时,需要检测人物是否在地面上,Charact转载 2016-10-20 22:40:35 · 7510 阅读 · 0 评论 -
3D世界宠物围绕主角旋转飞行的脚本
这个脚本的功能主要是宠物围绕角色不定期的顺逆时针交替旋转,交替的过程是宠物自身旋转,围绕主角旋转的同时宠物在一定范围内上下浮动,脚本里面用到了比较多的协程,不懂的同学可以看下这里点击打开链接。在比较复杂的运动中,“分而治之”是一个很重要很有用的解决方案。之前把前面所述的几种运动都集合在脚本中,用代码进行控制,结果发现他们之间的运动有好多是有冲突的,于是各种鬼畜现象就出现了。原创 2016-10-26 16:11:13 · 880 阅读 · 0 评论 -
NGUI添加鼠标事件监听方法
我们的游戏有时候需要在鼠标移动至物品栏某项物品的时候能够显示该物品的详细信息。Unity有好多种方法。其中一种是在该物品上面添加组件UI Event Trigger和UI Event Listener。注意要成对使用,否则单独使用UI Event Trigger可能会使该物体的GetComponentInChildren()语句出现报错,即找不到GetC原创 2016-08-30 10:27:48 · 3194 阅读 · 0 评论 -
多个对象同时使用一个对象的同步问题
写了段代码,主要部分如下: public void OnMouseOver() { hovering = true; //使用 } public void OnMouseExit() { hovering = false; } void Update() { if (hoveri原创 2016-10-06 09:29:48 · 1451 阅读 · 0 评论 -
打雷脚本
using UnityEngine;using System.Collections;public class Thundering : MonoBehaviour{ public Transform ground; float groundWidth, groundlength; Light thunderLight; public fl原创 2016-10-19 19:26:14 · 720 阅读 · 0 评论 -
Unity常用的函数和遇到的C#的知识整理
看Unity的视频也有一段时间了,把视频里面遇到的东西稍微记录一下,这些东西也算是Unity常用的,整理方便日后要用的的时候来搜索查看,好记性不如烂笔头,以后会不定期更新。Invoke("functionName",time) 功能:在time时间之后执行函数functionName(),这里这句话和functionName()在同一个脚本,至于调用其他脚本的函数好像不转载 2016-09-10 19:02:32 · 3624 阅读 · 0 评论 -
控制角色转身之后进行运动以及使角色转弯
很多游戏中,我们通过向前移动来控制角色到达目的地,这要求我们的控制角色要直面目的地,当角色没有面对目标,我们需要旋转过后再往前走,简单的往前可以是LookAt(),然后直接往前走。有过程的旋转可以通过 Vector3 forwardDir = targetGameObject.transform.position - transform.position;原创 2016-10-15 15:06:02 · 4183 阅读 · 0 评论 -
NGUI名字跟随、伤害显示、血条和miss效果的制作
这里讲一下类似于魔兽争霸里面的血条、伤害和miss效果的制作,这个涉及到了NGUI里面的HUDText,它是NGUI的扩展,有效的只有两个脚本。其中一个是UIFollowTarget、另外一个是HUDText。UIFollowTarget脚本所在的物体在编辑器会出现四个选项:Target表示的是你所要跟随的3D物体,一般是跟随在该物体正中心,所以为了原创 2016-09-02 07:33:47 · 2971 阅读 · 0 评论 -
Unity3D协程介绍 以及 使用
在Unity中,协程(Coroutines)的形式是我最喜欢的功能之一,几乎在所有的项目中,我都会使用它来控制运动,序列,以及对象的行为。在这个教程中,我将会说明协程是如何工作的,并且会附上一些例子来介绍它的用法。 协程介绍Unity的协程系统是基于C#的一个简单而强大的接口 ,IEnumerator,它允许你为自己的集合类型编写枚举器。这一点你不必关注太多,我们直接进入转载 2016-09-22 09:30:17 · 960 阅读 · 0 评论 -
Unity设置物体与屏幕成一定关系
我们做手游很多时候要考虑到屏幕适配的问题,比如有些屏幕很长,有些屏幕相对较短。当我们的一些2D游戏初始化的时候位置设置如果就没有和屏幕达到一定的关系,则有时候在一些手机上运行时会出现游戏开始时主要物品等不在屏幕内的bug。有时我们按照剧情在3D世界里面初始化物体的时候,也要和屏幕达成一定比例,比如闯过一个关卡,然后界面后面的3D世界放起了烟花,烟花也是要与屏幕成比例的。否则虽然原创 2016-09-21 20:49:20 · 2239 阅读 · 0 评论 -
Physics2D.Linecast的使用注意事项
今天做2D游戏使用了Physics2D.Linecast函数,为了使物体不会撞进墙。RaycastHit2D hit = Physics2D.Linecast(targetPosition, targetPosition + new Vector2(x, y));x,y值不是1就是-1,因为使用这个函数的脚本所在的物体本身也使用了BoxCollider2D所以在检测的时候把自己也给检测了,原创 2016-09-10 11:54:08 · 8421 阅读 · 1 评论 -
C#性能优化总结
1. C#语言方面 1.1 垃圾回收 垃圾回收解放了手工管理对象的工作,提高了程序的健壮性,但副作用就是程序代码可能对于对象创建变得随意。 1.1.1 避免不必要的对象创建 由于垃圾回收的代价较高,所以C#程序开发要遵循的一个基本原则就是避免不必要的对象创建。以下列举一些常见的情形。 1.1.1.1 避免循环创建对象 ★ 如果对象并不会随每次循环而改变状态,那么在循环中转载 2016-09-11 11:12:42 · 5675 阅读 · 0 评论 -
Unity3d读取文本文档中文不显示的问题
游戏的一些数据需要我们固定保存,文本文档是一种方式。在项目的Asset目录下存储的文本文档的中文在读取之后会显示不了中文。解决办法是吧文本文档的编码方式改为UTF-8将原文本文件另存为,然后选择编码方式,保存在原文档目录下并替换即可原创 2016-08-31 12:49:41 · 3203 阅读 · 0 评论 -
Unity 中 transform.Find()的使用心得
今天用transform.Find()了,跟着 视频一步步敲的!代码如下: void InitProperty() { iconname_sprite = transform.Find("icon_name").GetComponent(); name_label = transform.Find("property/name_bg原创 2016-08-21 15:22:51 · 11186 阅读 · 2 评论 -
[unity基础教程]操作transform.localPosition的时候请小心
移动GameObject是非常平常的一件事情,一下代码看起来很简单:transform.localPosition += new Vector3 ( 10.0f * Time.deltaTime, 0.0f, 0.0f );但是小心了,假设上面这个GameObject有一个parent, 并且这个parent GameObject的localScale是(2.0f,2.0f转载 2016-08-16 11:42:49 · 9368 阅读 · 0 评论 -
Unity3d的GameObject.Find()的一些使用心得体会
今天跟着视频写代码,最后是获得游戏主角身上的脚本的信息来使物品栏显示。就在Awake()方法里面写了GameObject.FindGameObjectWithTag(Tags.player).GetComponentInParent();这句代码报空指针错误,调试发现是Getcomponent出错了。查了好久发现脚本确实在本体而没有在子物体,也没有在别的脚本禁用PlayerStatus原创 2016-08-11 20:23:39 · 11246 阅读 · 0 评论 -
简单的实现两个物体在摄像机视野内的代码
这个方法是看视频得到的,有些游戏可能会用到,有点记录意义。首先说一下,这个方法适用于摄像机镜头角度相对于地面来说有了一定倾斜程度的情况下(如图一),如果摄像机镜头接近于垂直地面(如图二),则不能保证两个物体都在摄像机视野内,这个方法不奏效,图一图二然后这个方法是用在摄像机的正交镜头,透视镜头则不适用,这里用到的是正交的size属性,大小和原创 2016-09-12 18:48:37 · 746 阅读 · 0 评论 -
关于unity中的update、Lateupdate和FixedUpdate
MonoBehaviour.Update 更新 当MonoBehaviour启用时,其Update在每一帧被调用。 MonoBehaviour.FixedUpdate 固定更新 当MonoBehaviour启用时,其 FixedUpdate在每一帧被调用。 处理Rigidbody时,需要用FixedUpdate代替Up转载 2016-09-12 10:33:58 · 9755 阅读 · 0 评论 -
开枪效果的制作
开枪的时候通常会有一条火舌以及光和声音,这里讲一下在游戏中的开枪效果的制作。首先你的枪口或是其他设计物体的开火口出要有一个物体,空物体也行,用来定位特效位置,这样比较方便。然后该物体持有特效子物体、light和LineRenderer组件以及AudioSource组件,这些组件要设置相应的参数,这里引用一下介绍LineRenderer组件的网页:点击打开链接。下面是该物体的脚本原创 2016-09-17 16:14:21 · 2554 阅读 · 1 评论 -
NGUI和可视化添加按钮注册事件效果相同的代码
这篇博客可能不那么重要吧,暂时没想到什么情况需要用到。只是作为初学者的我想把一些对自己比较生疏的知识记下来。以后要用能够找到。我们可视化手动添加按钮的点击事件一般需要先指定一个继承了MonoBehavior类的GameObject然后再指定其脚本里面的方法下面的代码可以实现相同的功能: EventDelegate RedAttackEvent = n原创 2016-08-26 21:26:03 · 886 阅读 · 0 评论 -
在Unity快速修改方向控制键位
游戏有时候会有两个玩家一起玩的时候,如果这时两个玩家都使用同一个移动控制脚本。我们通常会在脚本中定义相应的KeyCode来进行不同的移动控制,但这显得很繁琐,这里简单介绍一种用unity软件界面来直接设置不同玩家的不同键位。首先,两个玩家的代码中都有下面这段代码: Input.GetAxis("Horizontal"); Input.GetAxis("Vertic原创 2016-09-23 20:43:19 · 8956 阅读 · 1 评论 -
unity学习之鼠标事件
unity学习,希望我的博客能给喜欢unity的朋友带来帮助今天完成了游戏的第一个关卡,觉得和别的组不同之处之一就是按钮的不同,登录注册等按钮我没用GUI的Button来做,而是用GUITexture来做,做出来的效果就是当鼠标没在按钮上时是一个状态,当鼠标移动到按钮上是又是另一个状态,当鼠标点击按钮时,又会变另一状态,这不是特效,其实是定义了一组照片和用鼠标事件来做的。下面就让我转载 2016-09-24 22:05:46 · 3372 阅读 · 0 评论 -
Unity绘制线条的几种方式比较
好文章:https://blog.csdn.net/ldy597321444/article/details/78031284/转载 2018-12-26 18:33:50 · 10105 阅读 · 1 评论