unity游戏unity unity攻击范围围绘制圆圈怎么做

程序写累了,就来玩玩酷跑小游戏吧,嘿嘿。
雨松MOMO送你一首歌曲,嘿嘿。
Unity3D研究院之游戏对象的访问绘制线与绘制面详解(十七)
Unity3D研究院之游戏对象的访问绘制线与绘制面详解(十七)
围观66826次
编辑日期: 字体:
一眨眼学习Unity3D 也有一段时间了,基本已经拿下了这套游戏引擎,回过头来想想以前写的RPG 游戏引擎,越来越发现以前写的就是垃圾。人果然是要不断学习与不断进步,好好学习,天天向上。哇咔咔~ 加油!!
最近做一个项目须要去绘制线与绘制面,那么把这两天的学习笔记整理一下,一是给自己留作备忘,二是方便初学者学习。
任何一个无规则曲线它都是有若干个线段组成,及时是圆形它也是又若干个线段组成的,也就是说将若干个线段拼接起来就是我们须要的无规则曲线~那么在3D 的世界中我们须要知道 X Y Z 三个点来确定一条3D线段。
首先先使用Unity编辑器的方式来添加一条线~
Unity -& GameObject -& Create Empty 创建一个空的对象,我命名为line。然后点击 Component -& Miscellaneous -& Line Renderer 给line添加一个线渲染器的属性,Line Renderer是非常中的属性,下面我会详细的说明。
Create -& Material 创建一个材质,做来这个线段的贴图,下面我们看看Line Renderer的一些重要参数。
Cast Shadows: 是否投射阴影。
Receive Shadows: 是否接收阴影。
Materials :设置材质,这里可以设置多个材质, line就是上面我们创建的材质,这里我给line这个材质涂上了红颜色。
Positions:这个属性就比较重要了,它是专门设置线段在3D 世界中的点的坐标,size 设置点的数量 为3 那么将会有3个点,Element 0
Element 1 Element 2
这三个点将确定这条曲线分为两段,第一段是(0,0,1) 到
(0,0,2) ,第二段是 (0,0,2) 到(0,0,4)。
Paramerters
StartWidth :设置起点的宽度
设置终点的宽度 ,这两项数值默认为1,但是现实起来很宽,所以一般都设置为0.几~
Start Color: 设置起点颜色
Start Color: 设置终点颜色
Use World Space 使用世界坐标系
大家看看效果,清楚的可以看到曲线分为两部分,第一部分较短 第二部分较长。
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
using UnityEngine;using System.Collections;using System.Threading;&public class Main : MonoBehaviour {& //游戏对象,这里是线段对象 private GameObject LineRenderGameObject;& //线段渲染器 private LineRenderer lineRenderer;& //设置线段的个数,标示一个曲线由几条线段组成 private int lineLength = 4;& //分别记录4个点,通过这4个三维世界中的点去连接一条线段 private Vector3 v0 = new Vector3(1.0f,0.0f,0.0f); private Vector3 v1 = new Vector3(0.0f,1.0f,0.0f); private Vector3 v2 = new Vector3(0.0f,0.0f,1.0f); private Vector3 v3 = new Vector3(1.0f,0.0f,0.0f);& void Start(){&
//通过之前创建的对象的名称,就可以在其它类中得到这个对象,
//这里在main.cs中拿到line的对象
LineRenderGameObject = GameObject.Find ("line");&
//通过游戏对象,GetComponent方法 传入LineRenderer
//就是之前给line游戏对象添加的渲染器属性
//有了这个对象才可以为游戏世界渲染线段
lineRenderer = (LineRenderer)LineRenderGameObject.GetComponent ("LineRenderer");&
//设置线段长度,这个数值须要和绘制线3D点的数量想等
//否则会抛异常~~
lineRenderer.SetVertexCount(lineLength);& } & void Update() {&
//在游戏更新中去设置点
//根据点将这个曲线链接起来
//第一个参数为 点的ID
//第二个 参数为点的3D坐标
//ID 一样的话就标明是一条线段
//所以盆友们须要注意一下!&
lineRenderer.SetPosition (0, v0);
lineRenderer.SetPosition (1, v1);
lineRenderer.SetPosition (2, v2);
lineRenderer.SetPosition (3, v3);& }&}
通过上面代码的设置,运行游戏,发现全新的一个三角形曲线赫然的映入我们的眼帘,有了上面的方法我们就可以组合的绘制出各种各样的3D 游戏曲线了,这里MOMO使用的是颜色,大家也可以添加一个贴图~
绘制面的话~,因为3D世界中游戏面全都是用三角形来拼起来的(出于效率的考虑),所以大家所看到的面其实都是用三角面拼接起来的。那么下面我们看看在Unity3D 中如何绘制三角形平面。先创建一个GameObject对象,我命名为face,然后给这个对象添加两个Mesh属性, 添加MeshFilter(网格过滤器)与mesh Renderer(网格渲染器)属性,这样子就可以绘制网格面了。
1234567891011121314151617181920212223242526272829303132333435363738
using UnityEngine;using System.Collections;&public class Main : MonoBehaviour {& // Update is called once per frame void Update () {&
//通过object对象名 face 得到网格渲染器对象
MeshFilter meshFilter = (MeshFilter)GameObject.Find("face").GetComponent(typeof(MeshFilter));&
//通过渲染器对象得到网格对象
Mesh mesh = meshFilter.mesh;& &&&&//API中写的不是提清楚,我详细的在说一遍& &&&&//设置顶点,这个属性非常重要 &&&&//三个点确定一个面,所以Vector3数组的数量一定是3个倍数 &&&&//遵循顺时针三点确定一面 &&&&//这里的数量为6 也就是我创建了2个三角面 &&&&//依次填写3D坐标点
mesh.vertices = new Vector3[] {new Vector3(5, 0, 0), new Vector3(0, 5, 0), new Vector3(0, 0, 5),new Vector3(-5, 0, 0), new Vector3(0, -5, 0), new Vector3(0, 0, -5)};&
//设置贴图点,因为面确定出来以后就是就是2D
//所以贴纸贴图数量为Vector2
//第一个三角形设置5个贴图
//第二个三角形设置一个贴图
//数值数量依然要和顶点的数量一样
mesh.uv = new Vector2[] {new Vector2(0, 0), new Vector2(0, 5), new Vector2(5, 5),new Vector2(0, 0), new Vector2(0, 1), new Vector2(1, 1)};&
//设置三角形索引,这个索引是根据上面顶点坐标数组的索引
//对应着定点数组Vector3中的每一项
//最后将两个三角形绘制在平面中
//数值数量依然要和顶点的数量一样
mesh.triangles= new int []{0,1,2,3,4,5};& }}
Build and Run
运行效果后清楚的可以看到两个三角形。MOMO提醒大家 善用三角平面可以绘制出各种各样的游戏面出来噢~哇咔咔~
最后欢迎各位盆友可以和MOMO一起讨论Unity3D游戏开发,总的来说这一章还是比较简单的,不过也是非常重要的一章。代码我就不上传了。哇咔咔~ MOMO愿和 大家好好学习,大家一起进步哈~!!!
本文固定链接:
转载请注明:
雨松MOMO提醒您:亲,如果您觉得本文不错,快快将这篇文章分享出去吧 。另外请点击网站顶部彩色广告或者捐赠支持本站发展,谢谢!
作者:雨松MOMO
专注移动互联网,Unity3D游戏开发
如果您愿意花10块钱请我喝一杯咖啡的话,请用手机扫描二维码即可通过支付宝直接向我捐款哦。
您可能还会对这些文章感兴趣!
Pingback 引用通告:【整理】关于角色攻击范围判定和攻击判定【unity3d吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:76,947贴子:
【整理】关于角色攻击范围判定和攻击判定收藏
第一次发这种整理贴,如果有哪个地方写的不好或者有问题希望大家及时指正出来,共同学习哈哈,废话不多说先来说下下面要用到的点乘概念点乘(Dot):点乘就是两个向量点乘后得到一个标量,这个标量就是两个向量的长度相乘后在乘以他们的夹角的余弦值,如果两个是单位向量的话dot的范围是[-1,1]。进入正题先来说说范围判定第一种方法:运用点乘/// &summary&/// Checks the can attakc./// &/summary&/// &returns&&c&true&/c&, if can attakc was checked, &c&false&/c& otherwise.&/returns&/// &param name="enemy"& 敌人对象&/param&/// &param name="_dis"&攻击范围&/param&public bool CheckCanAttack(GameObject enemy , float _dis)
Vector3 forward = myTransform.TransformDirection(Vector3.forward);
Vector3 toOther = enemy.transform.position - myTransform.
dot = Vector3.Dot(forward , toOther);
if(dot&0.5f && _dis * _dis&2 * dot * dot )
if(!canAttackEnemy.Contains(enemy.GetComponent&Enemy&()))
canAttackEnemy.Add(enemy.GetComponent&Enemy&());
if(canAttackEnemy.Contains(enemy.GetComponent&Enemy&()))
canAttackEnemy.Remove(enemy.GetComponent&Enemy&());
} 关于 _dis * _dis&2 * dot * dot这个公式的由来不知道能不能理解 画的有点糙这里偷懒只做了一个45度角的因为等边直角边比较好理解,如果大家要是想把这个范围在精确一些的话可以利用Mathf的Deg2Rad和Cos来计算第二种方法:运用触发器void OnTriggerEnter(Collider other)
pareTag("Enemy"))
listEnemy.Add(other.gameObject);
Debug.Log("Count:"+listEnemy.Count);
void OnTriggerExit(Collider other)
pareTag("Enemy"))
listEnemy.Remove(other.gameObject);
Debug.Log("Count:"+listEnemy.Count);
}当然这个触发器可以用多个基础模型拼出你想要的区域第三种方法:雨松MOMO大神写的一篇《Unity3D研究院之主角面朝方向一定区域内对象角度计算》==========================我是分割线=============================下面来介绍一下我想出的几种攻击判定方法第一种:给武器添加碰撞器个人感觉这个比较耗资源,就是在挥动武器的时候与敌人碰撞第二种:利用上面介绍的范围判定加上动画事件去做攻击判定这个方法也是我现在正在用的方法关于动画事件这个东西我在这里就不介绍了,大家去问度娘吧原理就是当动画执行到某一帧的情况下添加事件判断敌人是否在攻击范围内,如果在敌人响应被攻击的方法第三种:使用Physics的LineCast这种方法也是参考网上一篇文章去做的,但是用起来的时候有时候会有一些不准确有可能是我哪里用的不对,大家也可以去参考一下
零基础学Unity 北风Unity专业团队,9年教学经验,数10万就业学员,独创6+1教学.北风网Unity课程免费试学,企业项目实战教学,个性化提升方案,学完轻松高薪就业.
学习了,mark下
非常好,我正需要找这方面的资料,赞一个
顶一下, 后面刚好会用上
虽然看不懂,但能得精估计有料
用碰撞器和自己写算法 哪个效率高?比如 一群怪的情况下,怪肯定也有碰撞检测吧
我也比较偏向第二种,不过我现在用是射线,但没有理想中的准确,我把射线放在武器身上,武器从上往下挥的时候,总是有可能射不到敌人的碰撞器
技术贴一定要顶,希望大神们能多多分享自己的经验,让我等菜鸟们学习学习。感觉目前U3D的代码示例还是少了些。。当然是和.NET这等成熟技术相比较了。
做arpg必用的啊
楼主。_dis * _dis&2 * dot * dot 这个公式没看懂。求详细说明。谢谢了。这是想算前面的三角形区域吗?
趁没有坟,给lz和直接用的童鞋提提醒。。。1)有向量A、B,其点乘为A*B=Cosα*|A|*|B|;则有(A*B)/|A|=Cosα*|B|;又∵向量A为单位向量(其实对应forward)即,Dot=(A*B)=Cosα*|B|;2)那么,Dot其实对应着,从玩家指向敌人向量B,在玩家正前方投影的长度。。。B的长度(玩家和敌人之间的距离,不是攻击范围)乘上Cosα(lz设α=45,而Cosα=1/(2^0.5)),即为B在A投影临界长度。当B在A投影越长(是有分正负的),则A和B夹角越小(如果不好理解,自己画个圆看看);3)而用于范围攻击,我们要求敌人在玩家正前方的一个扇形内,即玩家指向敌人的向量B与玩家正前方A夹角小于α。由2),Dot(向量B在玩家正前方投影的长度)应该大于(或等于)临界长度_dis*Cosα,于是有dot&_dis*1/(2^0.5)。。。4)结果lz为了求一个2的开平方,干脆都乘方了dot*dot&_dis*_dis*0.5,也就是 _dis * _dis&2 * dot * dot,可是投影长度是符号,正负的,虽然lz用了Dot&0.5f,保证投影为正方向(如果没有这个条件,攻击范围为两个前后的扇形),再加上lz之前代码是Trigger+求距离,所以基本没有遇到前后有判断的问题。。。但是dot没乘方,带符号,可以表示左右两边0-180度(范围攻击全部情况)投影长度,lz为了避免求一个2的开平方,有点弄巧成拙了,如果是我,会直接把2^0.5定为一个变量or常量,还有一点,dot式子只是判断夹角(不是范围),距离要另外算。。。
回复 生萌海鲜 := =那个确实在某个程序片段,我硬说是trigger有点对不住。。。dot&0.5f还是指临界长度为0。5,但是加上距离和cos两个量,这个比较完全没太多意义。。。当角为90度,cos=0,就是投影长度为0,也就是当dot(投影长度)大于0,都在半圆内(90*2=180)。当角度为120度,cos=-0.5,投影长度为—0.5*_dis。dot大于这个值,自然小于120。。。由于_dis是动态变化,所以可以理解成一个半径变化的圆上画任意半径在主轴y的投影。。。所以lz用了不靠谱的两个式子表达一个式子,2的开平方,设为已知量不就行了。。。
有可能上边讲的不算清楚~利用中午休息时间又总结了一下,
不知道我这样解释有没有什么问题,欢迎来辩哈哈在此我为没有理解这个方法的童鞋再次深入的理解一下首先,假设我们玩家的攻击范围是5 ,也就是说以玩家为圆心半径是5的圆形范围内,都是我们的攻击范围(这里的5是可以自己设置,根据不同职业,比如刺客就小一些,战士就大一些) 下面这点事关键我们来解读一下这个dot算完之后得到了什么?我们简称敌人为b 玩家为a,下面会用到Vector3 forward =myTransform.TransformDirection(Vector3.forward);这个函数:变换方向,并且长度等于Vector3.forward我们都知道Vector3.forward = (0,0,1); Vector3 toOther = enemy.transform.position- myTransform.向量相减toOther = (bx-ax , by-ay , bz-az);点成就是向量乘积的和犹豫是和(0,0,1)点乘那最后得到的就是bz-az ,当然dot可能为负数(敌人在玩家前方为正,敌人在玩家后方为负数) 继续返回代码dot & 0.5f
把范围缩小了也就是说现在的攻击范围只剩下玩家前方并且与玩家距离大于0.5f的这个半圆范围 最后就是取玩家左45°+ 右45°的这个区域(这里只算45°)怎么判断点是不是在这个范围内呢?都知道直角三角形的两个直角边是相等的,更具上面说的直角边就是dot得到的值又知道斜边的平方 = 直角边平方 + 直角边平方所以点A 到玩家的距离明显小于斜边(蓝色粗线)点B 到玩家的距离明显大于斜边(红色粗线) 根据这3个条件判断出的敌人是否在范围内这个方法只是我在做ARPG攻击判定自己想出的方法非官方大神们来看看是不是真如MrYouSing所说的有问题呢?@邪恶的PS@mayaxiaoan
cos45*_dis即为临界投影长度,对应点B,&!&注意:_dis动态变化,为玩家和敌人的距离点A是夹角小于45,投影长度大于cos45*_dis,即Dot&cos45*_点C、D夹角大于于45,投影长度小于cos45*_dis(一个在正面长度为正,另一个在反面长度为为负);
DOT&cos45*_dis确实是一个不错的方法~ 当时确实没理解,后来画了个图,再加上和MrYouSing核对,终于想明白了 哈哈~看来又要补补数学了
有意思!收藏了。感谢你们俩分享经验。
赶脚智商被压制了。
看看,目测很牛
草,浪费感情,后面的朋友看看Vector3.Angle这个函数,什么都不用计算就可以,哎,走了不少弯路。
mark,在我心目中已经加精
想问问楼主,我用触发器做的,也能触发事件。然后我用预设实例化出来的兵,想使它能在触发后自动扣血,怎么做?想了好久,假设也是Collider other,这个other的blood属性怎么获得?事先是不知道发生触发的物体是什么,所以也无法用other.collider.blood。
登录百度帐号推荐应用像这种战棋游戏格子怎么实现比较节省资源。。。【unity3d吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:76,948贴子:
像这种战棋游戏格子怎么实现比较节省资源。。。收藏
这个地面的蓝色格子指示可移动区域,鼠标移到上面会改变颜色 ,我暂时想到的是用quad面片,但场上总共有大约有300个格子,担心效率问题,不知道吧友有什么解决思路吗?
零基础学Unity 北风Unity专业团队,9年教学经验,数10万就业学员,独创6+1教学.北风网Unity课程免费试学,企业项目实战教学,个性化提升方案,学完轻松高薪就业.
看我召唤邪恶的吧主
几个格子不会占用什么资源的,你移动范围不会多大的吧,我看你这还不是手游,合并网格就行了
几百个又不多
楼主截图这个是什么游戏啊?最近也在做这种类型的游戏,想参考参考。
这玩意最大的瓶颈在于drawcall,因为这种格子一般都是要做透明的,而unity 的动态batching,对透明支持不是很好,格子一多,dc会很高
看到了空轨
进来水一贴
用gl的drawmesh
我成功的做出了类似的效果
你觉得这样性能怎么样
这样就可以了
一张贴图最省
一个大张画好所有网格贴图 想隐藏加个动态遮照有比这省的吗
楼主光提问,有解决办法不写出来;以后生娃没屁眼!
楼主,我最近在研究战棋类的游戏,能把你这实现的代码或者demo分享给我一下吗,我不商用,只是学习,我是学生
登录百度帐号推荐应用Unity(87)
参照链接 :&
using UnityE
using System.C
public class AutoAttack : MonoBehaviour {
public Transform myTransform =
public float rotationAngle = 60f;
void Start()
myTransform = this.
void Update()
if (target == null)
if (Mathf.Abs(Vector3.Distance(target.transform.position, transform.position)) & 10)
Quaternion rotation = Quaternion .LookRotation (target.position - myTransform.position);
float angle = Quaternion.Angle(rotation, Quaternion.identity);
if(angle & rotationAngle * 0.5f)
myTransform.rotation = Quaternion.Slerp(myTransform.rotation, rotation, Time.deltaTime * 0.2f);
Debug.DrawLine(myTransform.position, target.position, Color.red);
void OnDrawGizmos()
for (int i = 0; i &= rotationAngle * 0.5f; i += 5)
for (int j = 0; j & rotationAngle * 0.5f; j += 5)
for (int k = 0; k & rotationAngle * 0.5f; k += 5)
//计算攻击角度范围内的四元素即旋转值
Quaternion r0 = Quaternion.Euler(Quaternion.identity.eulerAngles.x - i, Quaternion.identity.eulerAngles.y - j, Quaternion.identity.eulerAngles.z);
Quaternion r1 = Quaternion.Euler(Quaternion.identity.eulerAngles.x + i, Quaternion.identity.eulerAngles.y + j, Quaternion.identity.eulerAngles.z);
//计算该旋转方向上的最远点的坐标, 自身坐标加上 旋转 乘以 距离
Vector3 f1 = myTransform.position + (r0 * Vector3.forward) * 10; //myTransform.forward
transform.TransformDirection(
Vector3 f2 = myTransform.position + (r1 * Vector3.forward) * 10;
Debug.DrawLine(myTransform.position, f1, Color.red);
Debug.DrawLine(myTransform.position, f2, Color.red);
Quaternion r3 = myTransform.
Quaternion r4 = Quaternion.Euler(Quaternion.identity.eulerAngles.x - i, Quaternion.identity.eulerAngles.y + j, Quaternion.identity.eulerAngles.z);
Quaternion r5 = Quaternion.Euler(Quaternion.identity.eulerAngles.x + i, Quaternion.identity.eulerAngles.y - j, Quaternion.identity.eulerAngles.z);
Vector3 f4 = myTransform.position + (r4 * Vector3.forward) * 10; //myTransform.forward
transform.TransformDirection(
Vector3 f5 = myTransform.position + (r5 * Vector3.forward) * 10;
Debug.DrawLine(myTransform.position, f4, Color.red);
Debug.DrawLine(myTransform.position, f5, Color.red);
在scene试图可以看到下面的效果:
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:121206次
积分:2559
积分:2559
排名:第15188名
原创:108篇
转载:75篇
译文:14篇
(1)(5)(5)(15)(9)(14)(8)(7)(19)(26)(5)(42)(6)(6)(2)(22)(1)(4)
(window.slotbydup = window.slotbydup || []).push({
id: '4740887',
container: s,
size: '250,250',
display: 'inlay-fix'当前位置: >
3D扇形30度攻击范围
时间: 09:58 来源:Unity之家 作者:unity.jb51.net 浏览:
public&Transform&//获取目标
&&&&public&int&Distance&=&2;//扇形半径
&&&&Vector3&h;//自身坐标
//&Update&is&called&once&per&frame
void&Update&()&{
&&&&&&&&h&=&transform.//实时更新自身坐标
&&&&&&&&Quaternion&qr&=&transform.//自身旋转
&&&&&&&&Quaternion&right&=&transform.rotation&*&Quaternion.AngleAxis(15,&Vector3.up);//以自身Y轴旋转15度
&&&&&&&&Quaternion&left&=&transform.rotation&*&Quaternion.AngleAxis(15,&Vector3.down);//以自身Y轴旋转-15度
&&&&&&&&Vector3&f&=&h&+&(qr&*&Vector3.forward)&*&D//得到h正前方距离为Distance的坐标
&&&&&&&&Debug.DrawLine(h,&f,&Color.red);//绘制一条以h到f的红色的线
&&&&&&&&Vector3&l&=&h&+&(left&*&Vector3.forward)&*&D//得到以h的Y轴旋转-15度距离为Distance的坐标
&&&&&&&&Debug.DrawLine(h,&l,&Color.red);//绘制一条以h到l的红色的线
&&&&&&&&Vector3&r&=&h&+&(right&*&Vector3.forward)&*&D//得到以h的Y轴旋转15度距离为Distance的坐标
&&&&&&&&Debug.DrawLine(h,&r,&Color.red);//绘制一条以h到r的红色的线
&&&&&&&&if&(enemy)
&&&&&&&&&&&&Vector3&e=enemy.//得到enemy的坐标
&&&&&&&&&&&&Vector3&forward&=&transform.TransformDirection(Vector3.forward);//从自身坐标到世界坐标变换方向
&&&&&&&&&&&&Vector3&toOther&=&enemy.position&-&transform.//得到以enemy到自身的向量
&&&&&&&&&&&&if&(Vector3.Dot(forward,&toOther)&&&0)//判断enemy是否在自身的前方
&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&Vector3&e0l&=&e&-&l;//e到l的向量
&&&&&&&&&&&&&&&&Vector3&e0r&=&e&-&r;//e到r的向量
&&&&&&&&&&&&&&&&Vector3&h0l&=&h&-&l;//h到l的向量
&&&&&&&&&&&&&&&&Vector3&h0r&=&h&-&r;//h到r的向量
&&&&&&&&&&&&&&&&if&(Vector3.Angle(e0l,&h0l)&&&90&&&&Vector3.Angle(e0r,&h0r)&&&90)//判断是否在扇形内
&&&&&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&&&&&Debug.Log(&在正前方30度扇形内&);
&&&&&&&&&&&&&&&&&&&&enemy.renderer.material.color&=&Color.//在扇形内enemy变绿色
&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&else
&&&&&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&&&&&Debug.Log(&不在正前方30度扇形内&);
&&&&&&&&&&&&&&&&&&&&enemy.renderer.material.color&=&Color.//不在扇形内enemy变白色
&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&}
&&&&&&&&&&&&else
&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&enemy.renderer.material.color&=&Color.//在扇形后面enemy变白色
&&&&&&&&&&&&}
(责任编辑:脚印)
免责声明:Unity之家部分内容来源于互联网,如有侵权,请联系我们,本站将立即进行处理。
猜你也喜欢看这些 ??????
其他类型的Unity编程 ??????

我要回帖

更多关于 unity3d 攻击范围 的文章

 

随机推荐