GameDesign 板


LINE

※ 引述《JKT48 (JKT48)》之铭言: : 大家好 : 新手在玩Unity做一个飞机的游戏, 飞机可以射出飞弹打击目标等等 : 现在做到一个地方一直卡关, 所以上来请问前辈 : 是这样的我现在要做一个追踪型的飞弹可以直接追踪目标 : 2D游戏 : 从TOP角度来看 右边是+X 往上是+Z : 现在有几个情况 : 飞弹模型刚从网路上抓下来的时候是横的 : o======> : 我可以比他加入一些要素以後变成Prefab : Prefab也可以转角度 : y转-90度可以变成这样(大概看得懂就好= =) : ^ : i : i : o : 之後从Prefab拉近萤幕角度都没问题 : 因为飞弹本来就是要往上射 : 但是我在写脚本的时候 可能角度那边一直被搞混 : 目前是在主角飞机的scripts按下一个键以後 先寻找tag=enemy的敌人 : if(target = GameObject.FindGameObjectWithTag("BossEnemy")) : { : Vector3 relativePosition = player_transform.position : - target.transform.position; : //开始生子弹 : Instantiate(rocket_transform, : player_transform.position, : Quaternion.LookRotation(relativePosition)); : } : 我把元素都分行, 希望大家都看的懂 : 再配合我子弹自己的scripts: : this.transform.Translate(new Vector3(0, 0, -speed * Time.deltaTime) ); : 到目前为止, 子弹可以生成没错, 轨迹也有自动搜寻敌人的功能 : 但是为什麽子弹就是会一直横的去找敌人飞机啊Q_Q : 就是跟一开始模型的rotation一样 不管我Prefab怎麽设定都没用... : 我试着用this.transform.rotation去改角度, 可是发现越改越乱 : 不是飞弹自己乱绕就是追踪功能不对 : 不知道有没有前辈能够指点我一下是我哪边弄错了? : 或是我该找哪个方向的资料... : p.s 我有试着执行游戏然後再暂停游戏 去看生成的那些子弹 : 我想我应该是 : 物体生成角度 跟 物体本身的角度 搞混了? : 因为我看每个飞弹的角度在Y方向加90度就是我要的 : 可是不知道该在哪边改这个东西 : 新手发问 : 请见谅 在Prefabs中的Transform(position, rotation)是在instantiate时, 没有指定position与rotation的时候会采用的预设值。 当你用滑鼠拉Prefab进画面来instantiate时,会指定滑鼠位置给position, 但是因为没有rotation值设定,就会采用原本在Prefab的rotation。 所以用拉Prefab的方式,角度与预想的是一样的。 当今天用script来instantiate的时候, 如果你是用 Instantiate(rocket); // 没有指定position与rotation // 相当於拉Prefab到Heirarchy中 rocket就会采用Prefab的position与rotation。 然而,当使用的是 Instantiate(rocket, player_transform, player_rotation); 的时候,rocket的position与rotation会是所指定的值。 此时rotation就是原本的方向(Quaternion.identify, 此例中是向右)再转 player_rotation 而非先转了-90度再转。 处理的方法可以像推文前辈说的,用一个GameObject来做父物件。 这个父物件的旋转就是没有被旋转过(Quaternion.identity或0度), 所以对它做方向旋转或移动都会是如预期的。 把rocket放到这个GameObject做子物件,这时把rocket转-90度, 由於子物件是相对於父物件来移动旋转的,它不会影响到父物件的旋转。 还有另一种处理方式就是,没有父物件,但是也不要对rocket手动旋转, 它是朝向右的,就直接把右边当成它的移动方向(X轴正向)。 rocket_transform.Translate(Vector3.right * speed); // 不过这时用LookRotation可能会有问题,因为LookRotation是以Z轴正向为方向, 可能要改用Mathf.Atan2()的方式。 http://docs.unity3d.com/ScriptReference/Mathf.Atan2.html float angle = Mathf.Atan2(relativePosition.z, relativePosition.x) * Mathf.Rad2Deg; // 以X轴正向为方向 rocket_transform.Rotate(0f, angle, 0f); // 对Y轴旋转angle角度 (如果要以Z轴正向来算角度,Mathf.Atan2中把z值放到第二个参数, x值放到 第一个参数,就以Z轴正向来找旋转角度了) 希望有解释清楚,如果有错误之处,烦请指出,谢谢! --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 60.244.41.5
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/GameDesign/M.1439106518.A.65D.html ※ 编辑: yichen (60.244.41.5), 08/09/2015 15:52:50
1F:推 JKT48: 前辈谢谢 我後来用父子物件完成了, 另外我也有玩你的游戏 08/09 23:56
2F:→ JKT48: 我也是做飞机的, 改天完成度高一点时再放上来交流一下 08/09 23:57







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Boy-Girl站内搜寻

TOP