天天酷跑高分角色求一款老游戏,彷3D的吧,人物角色...

  青春一瞬即逝,想必大家和小编一样游戏没少玩,但是又有哪些游戏里面的人物让你至今难以忘怀甚至铭记一生呢,下面是小编整理的一些游戏经典人物与大家分享。
  一 刺客篇:
  加勒特(Garrett)
  原本是一名孤儿,在迫于生计而在大街上行窃之时遇到了他的导师阿特姆斯(Artemus)。阿特姆斯认为他是不同寻常的,便引导他加入了名叫&守护者&(The Keepers)的秘密组织,这个组织致力于维持The City的稳定各方势力的平衡。在守护者组织中他学习了各种技能,包括撬锁与潜行。加勒特认为从守护者中学到的这些技能用在他的老本行&&偷盗上更加有利可图。他本是&最有前途的追随者&,但他厌倦了守护者的责任,被组织认定为&失去平衡&,决定令守护者刺客处置他。但因为预言中,加勒特显得十分重要,所以他最终还是安全地退出了&守护者&,作为一名传说中的神偷活跃于城市当中。
  山姆费舍尔
  原本美国国家安全局的顶级情报员山姆费舍尔,在解决了前3作的危机以后,突然遭遇横祸。他的独生女儿因为一名司机的酒后驾车而在车祸中不幸丧生,山姆费舍尔在悲痛万分中以暴制暴,惩罚了害死女儿的司机,自己也因为伤害罪而入狱服刑。不过他在狱中听到一个惊人的消息,他的女儿并不是由于司机酒后驾驶而意外死亡,而是恐怖分子的蓄意谋杀,为了查明真相,山姆费舍尔毅然选择越狱,追查害死女儿的幕后真凶。在这次公布的画面中,玩家可以看到中国经济之都上海的标志性建筑&&东方明珠。据官方声称,本次对上海这个城市的系列描绘将十分到位,上海的玩家可以在国际级大作中体验到自己居住的城市,别有一番感觉。他是一位好特工,好刺客,更是一位好爸爸。
  Assassin
  可能有点熟悉,又有点陌生,Assassin是20年前发行的游戏里的海军准将,该作为横版卷轴射击游戏,有点魂斗罗的感觉,不过最为有趣的就是他的武器回旋镖,当然这是原版,特别版的武器则变成了镭射***,总之,本作都为今后的刺客作品建立的部分标准。
  杀手47
  一颗闪亮的光头,颈后还有一个奇怪的标记,我们的英雄&代号 47&是一个受命于&国际合同代理&(ICA)组织的雇佣***手。他的任务事先都经过了精心地安排。他为 ICA 执行各种袭击和其它差使,每次成功的完成任务之后都会拿到他应该拿到的报酬。大多数行动中,完成了主要任务,如果捎带还完成了次要任务,还会获得额外的奖励。随着游戏的进程,故事也在一点一点地展开,我们可以更多地了解&代号 47&和他神秘的经历。
  艾吉奥&奥迪托雷
  不畏恐惧,同时拥有深谋远虑的特质与优越头脑的刺客,在圣殿骑士团的大本营罗马组织了阿萨辛教团,并挺身对抗意大利所面临的危险。
  爱德华&肯维
  本作的主角,他是海瑟姆&肯维和珍妮&肯维的父亲,也就是3代中康纳&肯维的祖父。他是&寒鸦号&的船长。他有着艾吉奥一般的潇洒帅气,他独断专行,他高傲自负,他叛逆并且贪婪。他的野心似乎都放在了四处劫掠和享受女人身上,而不是因为是某个人的祖父,就要做一个循规蹈矩的乖乖儿。
  《天诛》男女主角
  这是来自较为真实的忍者题材游戏主角,《天诛》在潜入类型里也是很纯粹的作品,同时也是第一款重点引入了抓勾,屋檐跑酷,和转移敌人道具的游戏作品,力丸和彩女的组合也是鲜有游戏能够匹敌的。
  Harman Smith与他的7种人格
  这位角色是本次榜单里最为概念化的,Harman Smith与他的7种人格组成了本作的标题,同时也让该作的玩法非常有趣,玩家可体验到许多复杂的内容,Harman能以7位不同名字的刺客来保护自己,Garcian Smith,Dan Smith,Kaede Smith,Kevin Smith,Con Smith,Coyote Smith和Mask de Smith。
  除了《天诛》系列以外,没有作品能够像《忍者龙剑传》一样拥有真正的忍者刺客体验,主角龙隼的战斗也是相当爽快暴力,25年时间里,该系列一直以超高难度著称,这也让其成为游戏界最有代表的刺客角色之一。
  Snake?Snake?!Snaaaaaaaaaaake!&,这句台词一定让许多系列玩家非常熟悉,25年来,小岛秀夫打造的《合金装备》系列作品,让人们将游戏当作艺术,可与电影媲美,这款全球赞誉的系列作品,成为了现代游戏题材里最为标志的游戏之一,作为最为熟知的主角Solid Snake,与47号一样,他也是克隆里最为完美的一位,他继承了Big Boss优点,同时也拯救着游戏里的世界战争。
  Shadow
  Shadow是《最终幻想6》里被玩家所喜欢的角色,缘由其华丽的和战斗技术,有趣的背景,还有他的同伴Vector,这也让他成为FF系列里受欢迎的角色之一。
  二 战士篇
  奎托斯
  说到战士,第一个想到肯定是他,战神&&奎托斯,相信大家一定很熟悉,就不细说了。
  说到战神,我们就要想到另一位了,可能没奎托斯这样有名,知名度相对第一点。天启四启示之一,他的暴怒巨刃无人能敌。在游戏中,这个不屈的勇士被刻画成高尚与残暴的复合体,他的眼睛和他的头发一样雪白,射出的目光让所有天使战士和地狱魔鬼战栗。当他跨着他的灵魂战驹冲向无边的战火时,留在他身后的只有一条血与尸骨铺成的轨迹......
  说到天启四骑士,我们就要想到另一位&&Death,在2代中为了拯救War,不惜一切代价。
  骑士们接受了提议,但&死亡&却一直背负着濒临灭族的庞大罪责。自从他以行刑者身分屠杀他的同胞之后,他便戴着象征其身份的面具,且不再拿下。
  阿尔萨斯&米奈希尔
  接下来要说到魔兽了,首先想起的肯定是苦逼的巫妖王啊&&阿尔萨斯&米奈希尔。昔日为了保卫国家与亡灵天灾和兽族决一死战的王子,为了力量不惜把自己的灵魂卖给恶魔,王国昔日的辉煌到最后还是葬送在了他的手上。
  怒风&伊利丹
  和阿尔萨斯王子一样杯具的人物&&怒风&伊利丹,为了拯救自己的族人,寻找萨格拉斯(燃烧军团创始人)获得力量,结果,被自己的兄弟囚禁了一万年,但是为了泰兰德,可以放下这一万年的仇恨。
  约翰&普莱斯
  经典的使命召唤系列(虽然这些战士们基本上都死了)拥有克队友光环的约翰&普莱斯,在关键时候一只雪茄就能杀人无数啊,第一次抽雪茄,3万美军死了,再抽自己的兄弟没了,马科洛夫也死了。
  约翰&麦克塔维什
  &肥皂&约翰&麦克塔维什,说着一口带着苏格兰口音的英语,加入SAS前曾服役于北爱尔兰某旅的伞兵营。
  20世纪90年代曾经在俄罗斯政府军特种部队服役,随后加入极端民族主义阵营。96年,尤里和马卡洛夫在普里皮亚季目击了扎卡耶夫被狙掉一条手臂,并护送扎卡耶夫逃离。15年后,在阿拉萨德核危机过程中,尤里目击了马卡洛夫引爆核弹,消灭了3万美军。然而,极端民族主义分子的作为却让尤里感到非常不满。
  加里&&小强&&桑德森中士(Sgt. Gary &Roach& Sanderson):玩家在使命召唤游戏中扮演的主角之一。其绰号&Roach&意为&蟑螂&但是中国玩家为了感觉贴切,就把&Roach&翻译成了&小强&他和肥皂有许多相似之处。
  《使命召唤》的战士
  祭奠使命召唤的兄弟们。
  Robert Jacobson、Boone、Connor、Rianna、Hopper
  Robert jacobson:前美军陆军飞行员,被被反抗军收编为唯一一架还能飞的直升机驾驶员
  Boone:波士顿,同时也是三个孩子的父亲,是天生的领袖,他最关心的是:我因该怎么做才能解放我的人民
  Connor:一口南方腔的connor是幸存下来的特种部队队员,擅长各种武器
  Rianna:出生于偏远郊区,狩猎和野外生存是她的独门绝技,擅长偷袭和冷兵器
  Hopper:美籍韩人,杀气同样说思密达,高级技工一个,是反抗军后部一个不可缺少的人才。
  亚当斯
  野兔&老妈&巫毒&牧&亚当斯&Dusty&Deuce(《》里的,就不细说了)
  亚历克斯&默瑟
  游戏的主角(亚历克斯&默瑟)因被自己带出来的病菌感染,从停尸间醒来之后发现完全不知道之前做了些什么,然而突变的同时也获得了超乎常人的强大能力。当主角杀死路人或敌人时便可以吸收他们的记忆、能力,甚至能变成他们的样子。随着吸收被杀死敌人以及路人的数量不断增加,主人公Mercer的能力也会随之逐渐增强。最终将能够学会诸如将自己的身体变化成武器攻击或是硬化身体表面皮肤以抵御敌人进攻等神奇的能力。
  James Heller
  继前作设定,《虐杀原形2》依然设定在纽约市,由于之前爆发的灾难,这次的纽约市被称为零度纽约,根据感染程度不同被划分成三个区域。曼哈顿是红色区域,已经被生化怪物占据。曼哈顿附近的岛屿为***区域。绿色区域是最安全的,这里的Blackwatch私人武装带来的是一种别样的恐怖气氛。《》主角已不再是1代的Alex,而是新角色James Heller,一名士兵,他要搞清楚敌人背后的计划,而且要杀死他的创造者(Alex)。
  本作的但丁是恶魔与天使的混血儿,这种拥有超越恶魔和天使力量的混血儿叫纳菲力姆(Nephilim),身高1.8米,灰蓝眼眸,黑色短发。手持大剑&叛逆&(Rebellion)和两把弹药无限的手***&黑檀木&和&白***&(Ebony&Ivory)。随着剧情的发展,但丁的头发会因为魔化逐渐变成银白色。 新版但丁性格特色十分明显,狂放不羁,反社会,反权威,极端的暴力男,总是充满活力和怒火,爱黑色幽默,是个从不畏惧力量的爷们。只是在但丁叛逆的外表下,也有一颗脆弱敏感的心。他刻意的远离人群,为的就是搜寻并铲除威胁人类的恶魔。身经百战未曾遭一败,也不曾被人理解。所以他才总是在彷徨:我是应该作为人类活下去,还是作一个半神半魔的疯子?
  维吉尔
  维吉尔(Vergil):维吉尔是但丁的孪生兄弟,一头银发,蓝色大衣,手持大太刀&阎魔刃&。为人不苟言笑,心机重重。他不仅是一名纳菲力姆,也是伐魔教团的创建者。出于家仇血恨的缘故,维吉尔极力阻挠魔王曼达斯征服统治人类的邪恶计划。他一步步设计布局,为了实现自己的计划不惜牺牲任何人,是一名不折不扣的阴谋家。维吉尔唯一在乎的只有他的孪生兄弟但丁,因为7岁之前两兄弟在古堡里玩笑嘻戏的日子是维吉尔一生中为数不多的欢乐时光。尽管维吉尔十分憎恶恶魔,但他也不喜欢人类。在他眼里,人类只是&一群无事生非的蠢货,需要看护的稚童&。如果说魔王曼达斯是想压榨和杀戮人类,那么维吉尔就是像把人类变成自己统治下的臣民。在凯特和但丁的帮助下,维吉尔取得最终胜利,但对人类的篾视使他步入魔王的后尘。但丁极力劝阻他膨胀的野心,维吉尔居然怒喝道:&如果你不想承担保护人类的重担,那就站在一边别插手,我独自统治!& 于是故事结束在一场骨肉相争的惨剧中。
  《孤岛危机》&&三角洲特种部队诺曼,就不多说了。
  三.经典篇
  马里奥
  采蘑菇的管道工&&马里奥&
  劳拉&克劳馥
  《古墓丽影》&&劳拉&克劳馥1996年,EIDOS公司推出了一款名为《古墓丽影》(Tomb Raider)的游戏。由当时已经赢得了年度游戏奖的一个制作小组开发,当时的游戏首席图像已经厌烦了硬汉加主视点射击风格的游戏,他提出创作一个女性冒险英雄的概念,再加上英国贵族的风格,劳拉(Lara)原型出现了。在当时3D技术还不太成熟的环境下,古墓丽影已经具备了一个成功游戏应该具备的一切,美式风格的女英雄,的历险,加上在当时可谓是极为优秀的3D画面和操作,让这个游戏在发售了没多久就引起了全世界广大游戏玩家的浓厚兴趣,在PS上甚至卖出了百万份的成绩。
  比尔和兰斯
  公元2636年,不甘心数次失败的异形终于发动了对地球的大规模侵略战争,在异形压倒性的科技面前,人类一时束手无策,面对敌人的攻击节节败退,两度打败异形的魂斗罗小队的传奇战士比尔和兰斯再度临危受命,前去直接破坏敌人的中枢系统,以协助人类展开反击。
  四.英雄篇
  蝙蝠侠:华纳
  《》不差钱的华纳,对于蝙蝠侠这个金字招牌当然不会吝啬,所以画面肯定要向高端大气上档次看齐,于是引擎必须是虚幻滴。《》的开场动画也确实让玩家的期待暴涨,但是现实的差距往往那么残忍。首先,游戏的UI界面缺乏质感,简洁但显不出蝙蝠侠的档次。3D人物建模不挑细节就还算不错,咱的英雄蝙蝠侠小有卖相。至于声效,那怎是一个懒字了得,木有BGM也就算了,整个战斗过程挨打的音效竟然只有一种啊!
  蜘蛛侠:帕克
  《》是一款动作游戏,游戏中,玩家将控制主人公帕克战胜邪恶。游戏有35个独立的任务,自由的玩法,各种独特的技能。在游戏中玩家将吊在游戏中所呈现的3D纽约城中,用蜘蛛侠的超凡能力拯救人类,探索城市的秘密。
  超级英雄们
  《》是华纳兄弟制作发行的动作冒险游戏,漫画是游戏的前传,游戏的画面超乎想象,给人一种视觉的享受。游戏中玩家需要化身成为一个角色,由超人统一的带领自己的小伙伴们获得世界和平,每个角色都有自己不同的必杀绝招。游戏中还有大家熟悉的角色包括蝙蝠侠、超人、猫女、神奇女侠、闪电侠、电子人、夜翼、小丑女等九名超级英雄,让我们一起来体验这些英雄联盟的不凡的事迹。
  五.恐怖篇
  《寂静岭》前四部作品由Team Silent开发。第六作《》(Silent Hill: Homecoming)由Double Helix Games制作,第八作由Vatra Games制作。
  新闻记者
  逃生逃生又名鬼屋狂奔。本作是一部恐怖动作游戏,玩家扮演一位勇敢独立的新闻记者,前往一家已倒闭多年的精神病院,经历病院里各式各样的恐怖事件并发掘真相。在遥远的科罗拉多山脉,Massive山精神病院正等待着玩家的到来。表面上这是一间废弃了很久的精神病院, 但实际上是一家名叫Murkoff公司的跨国企业的&研究和慈善&分部。它一直在秘密地进行某项研究,直到现在......
  克苏鲁的呼唤也是一个角色扮演游戏,由混沌元素出版,其特色是以凡人去追查神秘现象并发现超越人类理解的宇宙真相,在越知道世界的真面目后,调查员(investigator,CoC对角色的称呼)就越接近疯狂,故事背景主要是真实世界混合克苏鲁神话因此在游戏过程中克苏鲁神话是一个极有用的技能,但是由于系统的设计,追求被禁止的知识是发狂的前一?,习得克苏鲁神话的调查员将渐渐变成非一般人的存在。
  该系列的外传作品《生化危机:代号维罗妮卡》于2000年在Dreamcast主机上推出,原本是该平台的独占作品,但于2001年Capcom在将游戏内容加强后,重新推出了《生化危机:代号维罗妮卡完全版》,并同时推出Dreamcast和PlayStation 2两个版本。虽然Capcom曾经表示下一部正篇作品会在PlayStation 2上推出,但该系列创始者,制作人三上真司决定让《生化危机》系列成为任天堂GameCube主机的独占作品。因此接下来的三款游戏在发行时仅推出GameCube版本,分别是《生化危机1》的重制版、《生化危机0》(原本预计在Nintendo 64主机上推出),以及《生化危机4》。
  《》是一款以记忆为主题的科幻游戏,游戏背景设定在近未来2084年的巴黎,在游戏中人类的记忆可以在黑市中出售和购买,游戏的主要角色是一名女性,在游戏公布的首段宣传片中我们可以看到这名女主角吸引敌人注意,攀爬建筑以及其他游戏要素,着实让大家对于女主角的印象十分的深刻。
  贝尔蒙特
  《恶魔城》讲述吸收人间黑暗面情绪所转化的恐怖黑暗力量,并以此力量肆虐人间的吸血鬼伯爵德古拉,与一个追迹他的古老灭魔家族贝尔蒙特(日文:ベルモンド、英文:Belmont)历经好几世纪的恩怨,以及使命传承所造成的冲突。
  戈登&弗里曼博士
  戈登&弗里曼博士(Dr. Gordon Freeman)是第一人称射击类型《半条命1》系列游戏的主角。他是一个理论物理学家但是突然而来的变故让他不得不拿起武器对抗那些充满敌意的外星人,以及一些危险试验出错后产生的变异生物。
  艾萨克.克拉克
  《死亡空间》的故事发生在一艘的大型太空船上,飞船内的通道与空间相对狭小,房间与过道充满阴冷诡异的气氛,伴随而来的是隐藏在黑暗中的恐怖异形,主角艾萨克.克拉克(最残暴的工程师),将时刻面临死亡威胁,主角需要尽一切力量挑战无尽的死亡空间,并逃出生天。
  六.创意篇
  Maxwell
  饥荒是由《闪克》制造组Klei制造发行的一款动作冒险类求生游戏,《》的故事讲述的是关于一名科学家被恶魔传送到了异世界荒野。本作的操作系统很简单,只需动动鼠标,故事情节富有创意,有很多好玩的东西等待玩家去发现,其中maxwell的身份就隐藏在许多场景中。
  《》是一个沙盘建造游戏,这个游戏让每一个玩家在三维空间中自由地创造和破坏不同种类的方块。其灵感源自于无尽矿工,矮人要塞和地城守护者。创始人为马库斯&阿列克谢&泊松,他同时也是Mojang AB的创立人。目前的开发负责人为延斯&伯根斯坦。玩家在游戏中的形象可以在单人或多人模式中通过摧毁或创造方块以创造精妙绝伦的建筑物,创造物和艺术品。
  Randall Wayne
  世界末日来临,没有遗留任何希望,也没有新纪元。只有这些幸存者。冒险游戏《死光》故事将围绕一个名叫Randall Wayne的人物上展开,20世纪80年代地球上发生了一场灾难性事件,毁灭了一切,而Wayne则是在余波之后穿过西雅图搜找他的家人。本作使用了横版过关的方式,加入了解谜元素,可谓是一部末日题材的创意游戏。
  小机器人
  《无主之地》为一款RPG风格合作FPS游戏,在《》中的AI将会比一代有明显进步,敌人不再是一盘散沙。比如机器人会互相照顾,盗贼会爆发火拼;某些带有元素属性的生物(比如Fire Skag)会对该元素免疫,而一群没有元素属性的Skag小崽子在一只Fire Skag的激励下会变形为Fire Skag幼崽,幼崽们将完全继承来自Fire Skag的元素属性。本作采用了美式漫画风格的画面,让游戏别有一番风味,还有各种职业和上万种武器。
  《黑道圣徒》主角
  《》是整个故事第三部,承接前两代故事剧情。玩家将扮演一位犯罪组织中的精英成员,游戏场景也从1,2代的史提瓦特城转到钢埠。第三代游戏仍然扮演来自前作的自定义英雄,同时引入了名为&圣安德列斯风格&的升级系统。并且该作取消在线多人模式,支持合作模式。另外,《黑道圣徒3》将引入《红色派系》新作所采用的Geo-Mod物理破坏系统来打造《》开放世界设定的破坏场景。这个世界你才是老大,做主线,游览城市,随你便。
  绯丝&康纳斯
  《镜之边缘》,以&第一人称&和&动作跑酷&的结合为主要特色。能够在第一人称视角下做出爬墙、撞门、荡摆、翻滚等跑酷动作。该作需要根据地形和敌情,灵活运用多种跑酷技巧逃脱敌人的追击,并以最快速度到达目的地,游戏类型是本作的一大亮点。
  七.坑爹篇
  玛丽猫
  猫里奥( しょぼんのアクション),全名为多罗猫版马里奥,是一款由日本民间玩家制作的单机小游戏,和超级马里奥比较相似,一共八关。中国玩家又称其为超级玛丽变态版或猫版超级玛丽,英文名字叫cat mario。
  百米赛跑(Grab the Glory - 100 Meter Sprint) 是个打发闲暇时间的小游戏,玩家操控的短跑选手要赢过对手在最短时间内跑到终点,必须在短时间之内奋力的加速跑,抵达终点。
  泰坦尼克号游戏,不多说了,踩个水都能扣血!!!
  最坑爹的游戏角色&&腾讯出品
  先从最坑爹的喜爱福说起吧,一把永久***688RMB,看不见,摸不着,在CSOL里我能买5、6把啊,贵咱就别去说他什么了,最坑爹的随人智商,进一个房间只见会员喊:&嘿,我有火麒麟、雷神!&10RMB冲个会员,自己菜还说我开G,动不动就T人,和CSOL一比差远了,人家多和谐,一进房间没什么好喊的,你有的武器,别人有可能比你好玩,互换武器啊,多有意思,团结刷大灾变,CF挑战打不过就骂队员SB,天壤之别,而且玩CF越玩越傻,一把黄金***几百才1星期,宁愿中午啃着盒饭,过着艰苦生活,还拿钱买黄金***!
  《孤岛危机OL》腾讯呢,只会买下别人的名字,之后用CF的方式格式化一下,来人,《孤岛危机OL》,道具收费模式,没钱玩个屁啊!在游戏中,这是真实的事情:你拿着你的小***和护甲,你打RMB玩家,愣是打不死,护甲高的和那什么似的,他打你,砰,一***毙命。
  《》&&有时死在腾讯手下的一部大作,道具收费模式,你收费就收费了,那也平衡点啊,哪有这样的,你拿着USp小手***,别人扛着RPG,只要轰的一声你就没命了。
  《英雄联盟》众英雄
  《》&&抄袭我们的《DOTA》,花点钱雇个暴雪辞退的设计师,就敢叫《WOW》原版人马打造?一打不过就挂起机来把队友骂,一进《DOTA》技术菜就说这游戏画质渣,太垃圾,我们的《DOTA》你懂吗小学生?一个皮肤写着《刺客信条》,和那什么关系,造型完全对不上,穿个披风就敢叫《刺客信条》?中国领先的IT技术网站
51CTO旗下网站
Unity3D游戏开发之仿仙剑奇侠传角色控制效果
在上一篇文章中,我们从Unity3D为我们提供的相机原型实现了非编码式的小地图,如果结合GUI在这个小地图下面绘制一些背景贴图,相信整体的效果会更好一些。
作者:秦元培来源:秦元培的博客| 11:05
在上一篇文章中,我们从Unity3D为我们提供的相机原型实现了非编码式的小地图,如果结合GUI在这个小地图下面绘制一些背景贴图,相信整体的效果会更好一些。博主希望这个问题大家能够自己去做更深入的研究,因为贴图的绘制在前面的文章中,我们已经已经提到了,所以这里就不打算再多说。今天呢,我们继续为这个小项目加入一些有趣的元素。首先请大家看一下下面的图片:
相信熟悉国产单机游戏的朋友看到这幅图片一定会有种熟悉的感觉,博主在本系列的第一篇文章中,就已经提到了博主是一个国产单机游戏迷,博主喜欢这样有内涵、有深度的游戏。或许从操作性上来说,仙剑系列的回合制在很大程度上落后于目前的即时制,但是我认为回合制和即时制从本质上来说没有什么区别,即时制是不限制攻击次数的回合制,所以从玩法上来讲,回合制玩家需要均衡地培养每一个角色,在战斗中寻找最优策略,以发挥各个角色的优势,因此博主认为如果把即时制成为武斗,那么回合制在某种程度上就可以称之为文斗,正是因为如此,仙剑系列注重剧情、注重故事性,为玩家带来了无数感动。鉴于国内网游玩家的素质,博主一贯反感网游,所以比较钟情于武侠/仙侠单机游戏,虽然仙剑同样推出了网络版,但是在游戏里开着喇叭、挂着语音、相互谩骂的网游环境,实在让我找不回仙剑的感觉。好了,闲话先说到这里,今天我们来说一说现价奇侠传四里面的角色控制。玩过仙剑奇侠传的人都知道,仙剑奇侠传真正进入3D界面的跨时代作品当属上海软星开发的仙剑奇侠传四,该公司之前曾开发了仙剑奇侠传三、仙剑奇侠传三外传等作品,后来由于某些原因,该公司被迫解散。而这家公司就是后来在国产单机游戏中的新锐&&上海烛龙科技的《古剑奇谭》。有很多故事,我们不愿意相信结局或者看到了结局而不愿意承认,青鸾峰上蓝衣白衫、白发苍苍的慕容紫英,随着魔剑幽蓝的剑影御剑而去的身影,我们都曾记得,或许他真的去了天墉城,只为一句:承君此诺,必守一生。好了,我们正式开始技术分享(博主内心有很多话想说)!
在仙剑奇侠传四中,玩家可以通过鼠标右键来旋转场景(水平方向),按下前进键时角色将向着朝前(Forward)的方向运动,按下后退键时角色将向着朝后(Backword)的方向运动、当按下向左、向右键时角色将向左、向右旋转90度。从严格意义上来说,仙剑四不算是一部完全的3D游戏,因为游戏视角是锁死的,所以玩家在平时跑地图的时候基本上是看不到角色的正面的。我们今天要做的就是基于Unity3D来做这样一个角色控制器。虽然Unity3D为我们提供了第一人称角色控制器和第三人称角色控制器,但是博主感觉官方提供的第三人称角色控制器用起来感觉怪怪的,尤其是按下左右键时那个旋转,感觉控制起来很不容易,所以博主决定自己来写一个角色控制器。首先我们打开项目,我们还是用昨天的那个例子:
很多朋友可能觉得控制角色的脚本很好写嘛,这是一个我们通常见到的版本:
&if(Input.GetKey(KeyCode.A)) &{ &&&&SetAnimation(LeftAnim); &&&&this.mState=PersonState.W &&&&mHero.transform.Translate(Vector3.right*Time.deltaTime*mSpeed); &} &&if(Input.GetKey(KeyCode.D)) &{ &&&&SetAnimation(RightAnim); &&&&this.mState=PersonState.W &&&&mHero.transform.Translate(Vector3.right*Time.deltaTime*(-mSpeed)); &} &&if(Input.GetKey(KeyCode.W)) &{ &&&&SetAnimation(UpAnim); &&&&this.mState=PersonState.W &&&&mHero.transform.Translate(Vector3.forward*Time.deltaTime*(-mSpeed)); &} &&if(Input.GetKey(KeyCode.S)) &{ &&&&SetAnimation(DownAnim); &&&&this.mState=PersonState.W &&&&mHero.transform.Translate(Vector3.forward*Time.deltaTime*(mSpeed)); &&&&Vector3&mHeroPos=mHero.transform. &} &
那么,我们姑且认为这样写没什么问题,那么现在我们导入官方提供的Script脚本资源包,找到MouseLook脚本,在Update()方法中添加对右键是否按下的判断,这样我们就可以实现按下鼠标右键时视角的旋转。修改后的脚本如下:
using&UnityE &using&System.C &&&&&&&&&&&&&&&[AddComponentMenu(&Camera-Control/Mouse&Look&)] &public&class&MouseLook&:&MonoBehaviour&{ &&&&&&public&enum&RotationAxes&{&MouseXAndY&=&0,&MouseX&=&1,&MouseY&=&2&} &&&&&public&RotationAxes&axes&=&RotationAxes.MouseXAndY; &&&&&public&float&sensitivityX&=&15F; &&&&&public&float&sensitivityY&=&15F; &&&&&&public&float&minimumX&=&-360F; &&&&&public&float&maximumX&=&360F; &&&&&&public&float&minimumY&=&-60F; &&&&&public&float&maximumY&=&60F; &&&&&&float&rotationY&=&0F; &&&&&&void&Update&() &&&&&{ &&&&&&&&&if(Input.GetMouseButton(1)) &&&&&&&&&{ &&&&&&&&&&&if&(axes&==&RotationAxes.MouseXAndY) &&&&&&&&&&&{ &&&&&&&&&&&&&float&rotationX&=&transform.localEulerAngles.y&+&Input.GetAxis(&Mouse&X&)&*&sensitivityX; &&&&&&&&&&&&& &&&&&&&&&&&&&rotationY&+=&Input.GetAxis(&Mouse&Y&)&*&sensitivityY; &&&&&&&&&&&&&rotationY&=&Mathf.Clamp&(rotationY,&minimumY,&maximumY); &&&&&&&&&&&&& &&&&&&&&&&&&&transform.localEulerAngles&=&new&Vector3(-rotationY,&rotationX,&0); &&&&&&&&&&&} &&&&&&&&&&&else&if&(axes&==&RotationAxes.MouseX) &&&&&&&&&&&{ &&&&&&&&&&&&&transform.Rotate(0,&Input.GetAxis(&Mouse&X&)&*&sensitivityX,&0); &&&&&&&&&&&&& &&&&&&&&&&&} &&&&&&&&&&&else&&&&&&&&&&&{ &&&&&&&&&&&&&rotationY&+=&Input.GetAxis(&Mouse&Y&)&*&sensitivityY; &&&&&&&&&&&&&rotationY&=&Mathf.Clamp&(rotationY,&minimumY,&maximumY); &&&&&&&&&&&&& &&&&&&&&&&&&&transform.localEulerAngles&=&new&Vector3(-rotationY,&transform.localEulerAngles.y,&0); &&&&&&&&&&&} &&&&&&&&&} &&&&&} &&&&& &&&&&void&Start&() &&&&&{ &&&&&&&&&&&&&&&&&&if&(rigidbody) &&&&&&&&&&&&&rigidbody.freezeRotation&=&true; &&&&&} &}&
接下来,我们将这个脚本拖放到我们的角色上,运行游戏,我们发现了一个问题:当旋转视角后,角色并没有如我们期望地向朝前的方向移动,相反,角色依然沿着世界坐标系里的Vector3.forward向前运动。按照我们的想法,当旋转视角以后,角色应该可以朝着前方运动。怎么办呢?这里我们在上面的代码中加上这样的代码:
&&&&&&&&if(Input.GetMouseButton(1)) &&&&&&&&{ &&&&&&&&&&&&&&&&&&&&&&mAngles+=Input.GetAxis(&Mouse&X&)&*&15; &&&&&&&&&&&&&&&&&&&&&&transform.rotation=Quaternion.Euler(new&Vector3(0,mAngles,0)); &&&&&&&&}&
这里代码的作用是当用户按下鼠标右键旋转视角时,我们首先计算在水平上的旋转角,然后让角色的坐标系跟着视角一起旋转,这样就相当于把Vector3.forward和旋转后的目标角度平行。这样的话,我们控制人物向前运动的时候,它就会按照这个新的方向去运动。这样我们的第一个问题就解决了。我们继续往下看,由于这个模型中只提供了一个行走/奔跑的方向动画,所以就出现了角色动画和角色行为不符的问题,怎么办呢?这时候,我们可以这样想,我们可以先把角色旋转到指定的方向,然后让角色朝着向前的方向运动,这样角色动画和角色行为就可以相互对应起来了。为此我们做下面的工作:
&&&&&public&enum&PersonDirection &&&&&{ &&&&&&&&&&&&&&&&&&Forward=90, &&&&&&&&&&&&&&&&&&Backward=270, &&&&&&&&&&&&&&&&&&Left=180, &&&&&&&&&&&&&&&&&&Right=0, &&&&&}&
我们这里定义了四个方向上的角度,当我们角色旋转到Forward方向时,我们根据用户按下的键,来判断角色要向那个方向旋转:
private&void&SetPersonDirection(PersonDirection&mDir) &&&&&{ &&&&&&&&&&&&&&&&&&if(mDirection!=mDir) &&&&&&&&&{ &&&&&&&&&&&&&transform.Rotate(Vector3.up*(mDirection-mDir)); &&&&&&&&&&&&&mDirection=mD &&&&&&&&&} &&&&&}&
在该方法中,如果目标方向大于当前方向,那么角色将逆时针旋转,否则将顺时针旋转,角度差值为0,则不旋转。
好了,现在角色已经旋转到相应的方向了,我们让它朝前运动:
transform.Translate(Vector3.forward&*&WalkSpeed&*&Time.deltaTime);&
接下来我们为角色定义状态枚举值:
&public&enum&PersonState &{ &&&&&idle, &&&&&run, &&&&&walk, &&&&&jump, &&&&&attack &}&
我们在上面的代码上面做修改,最终形成的代码为:
using&UnityE &using&System.C &&public&class&RPGControl&:&MonoBehaviour&{ &&&&& &&&&&&&&&&private&Animation&mA &&&&&&&&&&public&PersonState&mState=PersonState. &&&&&&&&&&public&PersonDirection&mDirection=PersonDirection.F &&&&&&&&&&public&float&mJumpValue=2F; &&&&&&&&&&&&&&&private&float&mA &&&&&&&&&&public&GameObject&mC &&&&&&&&&&public&PersonState&RunOrWalk=PersonState. &&&&& &&&&&public&float&WalkSpeed=1.5F; &&&&&public&float&RunSpeed=3.0F; &&&&&&&&&&public&enum&PersonState &&&&&{ &&&&&&&&&idle, &&&&&&&&&run, &&&&&&&&&walk, &&&&&&&&&jump, &&&&&&&&&attack &&&&&} &&&&&&&&&&public&enum&PersonDirection &&&&&{ &&&&&&&&&&&&&&&&&&Forward=90, &&&&&&&&&&&&&&&&&&Backward=270, &&&&&&&&&&&&&&&&&&Left=180, &&&&&&&&&&&&&&&&&&Right=0, &&&&&} &&&&& &&&&&void&Start&()& &&&&&{ &&&&&&&&&&&&&&&&mAnimation=gameObject.GetComponent&Animation&(); &&&&&} &&&&&&void&Update&()& &&&&&{ &&&&&&&&&&&&&&&&if(Input.GetKey(KeyCode.W)) &&&&&&&&{ &&&&&&&&&&SetPersonDirection(PersonDirection.Forward); &&&&&&&&&&SetPersonAnimation(); &&&&&&&&} &&&&&&&&&&&&&&&&if(Input.GetKey(KeyCode.S)) &&&&&&&&{ &&&&&&&&&&SetPersonDirection(PersonDirection.Backward); &&&&&&&&&&SetPersonAnimation(); &&&&&&&&} &&&&&&&&&&&&&&&&if(Input.GetKey(KeyCode.A)) &&&&&&&&{ &&&&&&&&&&SetPersonDirection(PersonDirection.Left); &&&&&&&&&&SetPersonAnimation(); &&&&&&&&} &&&&&&&&&&&&&&&&if(Input.GetKey(KeyCode.D)) &&&&&&&&{ &&&&&&&&&&SetPersonDirection(PersonDirection.Right); &&&&&&&&&&SetPersonAnimation(); &&&&&&&&} &&&&&&&&&&&&&&&&if(Input.GetKeyUp(KeyCode.A)||Input.GetKeyUp(KeyCode.D)||Input.GetKeyUp(KeyCode.S)||Input.GetKeyUp(KeyCode.W)||Input.GetKeyUp(KeyCode.Space))&&&& &&&&&&&&{ &&&&&&&&&&mAnimation.Play(&idle&); &&&&&&&&&&mState=PersonState. &&&&&&&&} &&&&&&&&&&&&&&&&if(Input.GetKey(KeyCode.Space)) &&&&&&&&{ &&&&&&&&&&transform.GetComponent&Rigidbody&().AddForce(Vector3.up&*&mJumpValue,ForceMode.Force); &&&&&&&&&&mAnimation.Play(&Jump&); &&&&&&&&&&mState=PersonState. &&&&&&&&} &&&&&&&&&&&&&&&&if(Input.GetMouseButton(0)) &&&&&&&&{ &&&&&&&&&&mAnimation.Play(&Attack&); &&&&&&&&&&mState=PersonState. &&&&&&&&&&StartCoroutine(&ReSetState&); &&&&&&&&} &&&&&&&&&&&&&&&&if(Input.GetMouseButton(1)) &&&&&&&&{ &&&&&&&&&&&&&&&&&&&&&&mAngles+=Input.GetAxis(&Mouse&X&)&*&15; &&&&&&&&&&&&&&&&&&&&&&transform.rotation=Quaternion.Euler(new&Vector3(0,mAngles,0)); &&&&&&&&} &&&&&} &&&&& &&&&&private&void&SetPersonDirection(PersonDirection&mDir) &&&&&{ &&&&&&&&&&&&&&&&&&if(mDirection!=mDir) &&&&&&&&&{ &&&&&&&&&&&&&transform.Rotate(Vector3.up*(mDirection-mDir)); &&&&&&&&&&&&&mDirection=mD &&&&&&&&&} &&&&&} &&&&& &&&&&private&void&SetPersonAnimation() &&&&&{ &&&&&&&&&if(RunOrWalk==PersonState.walk) &&&&&&&&&{ &&&&&&&&&&&&mAnimation.Play(&Walk&); &&&&&&&&&&&&mState=PersonState. &&&&&&&&&&&&transform.Translate(Vector3.forward&*&WalkSpeed&*&Time.deltaTime); &&&&&&&&&} &&&&&&&&&else&if(RunOrWalk==PersonState.run) &&&&&&&&&{ &&&&&&&&&&&&mAnimation.Play(&Run&); &&&&&&&&&&&&mState=PersonState. &&&&&&&&&&&&transform.Translate(Vector3.forward&*&RunSpeed&*&Time.deltaTime); &&&&&&&&&} &&&&&} &&&&& &&&&&IEnumerator&ReSetState() &&&&&{ &&&&&&&&&&&&&&&&&&yield&return&new&WaitForSeconds(mAnimation.clip.length); &&&&&&&&&mAnimation.Play(&idle&); &&&&&&&&&mState=PersonState. &&&&&} &&&&& &&&&&&&&& &} &
其中,SetPersonAnimation()方法将根据RunOrWalk值来决定角色是采用行走还是奔跑的方式移动。最后,我们加上一个摄像机跟随的脚本SmoothFollow,这个脚本在官方提供的Script资源包里,我们把该脚本绑定到主摄像机上,并设定我们的角色为其跟随目标。
最后看看效果动画吧:(2M图片大小的限制啊,还有这难用的编辑器啊)
在《Unity3D游戏开发之当仙剑奇侠传角色控制器效果》上文中,我们实现了一个简单的角色控制器。博主之前曾说过,这个控制器是存在问题的,具体存在什么问题呢?请大家和我一起来看今天的文章。今天博主想和大家说说碰撞器与刚体,为什么要讨论这个呢?我们先来看这样一个需求:我们希望我们的角色在游戏场景中运动时,四面的墙壁对角色一个&撞墙&的感觉,同时不能影响角色的位置,当碰到场景中的某些障碍物(如荆棘等)时,角色能够掉血。基于这样的需求,我们想给角色、墙壁和障碍物加上碰撞器,通过编码的方式来获得碰撞信息以确定碰撞对角色的影响。我们打开之前创建好的项目,如图所示:
我们知道,在Unity3D中存在这几种碰撞器:盒子碰撞器、球体碰撞器、胶囊体碰撞器、网格碰撞器、地形碰撞器、滚轮碰撞器。除了滚轮碰撞器专门为汽车设计以外,其余的碰撞器在平时的游戏设计中我们都能碰到。墙体可以看做是盒子,所以可以使用盒子碰撞器。这里我们用五个大箱子作为我们的障碍物,同样地我们使用盒子碰撞器。那么对于我们的角色呢?我们知道我们的角色模型并不是均匀规则的几何体,如果使用上述的碰撞器,会出现碰撞不精确的情况。怎么办呢?这里我们选择网格碰撞器。我们直接给它创建一个网格碰撞器:
运行程序,可是我们发现我们的角色并没有和场景中的墙体发生碰撞,会从墙体和障碍物中穿过去。这是怎么回事呢?我们发现Mesh Collider有一个Mesh属性,所以这里应该为这个Mesh属性添加一个网格。可是项目中并没有这样一个网格体啊,博主查阅了相关资料发现,Unity3D是可以为模型生成网格体,那么怎么做呢?我们先把这个手动添加的网格碰撞体移除,然后在项目中找到我们模型文件,在右边的属性面板选中Generate Collider,然后点击Apply
现在我们回到游戏场景窗口中,我们会发现是这样的结果:
这模型和网格完全不能匹配啊?这个问题,博主到目前为止没有找到一个合理的解释。如果我们此刻运行游戏,角色倒是可以响应碰撞了,我们这里使用的是Collision检验,如果还有朋友不知道怎么检测碰撞,请看这篇文章。但是新的问题随之而来了,我们的角色由于受到碰撞的影响受到了力的作用,碰撞后不再受玩家控制,直接从画面上消失了。最终博主的解决办法是:给墙体加上盒子碰撞器、给角色加上一个胶囊体、刚体(取消重力)。最终程序运行结果如下:
大家可以注意到再我松开鼠标的那一瞬间角色自己发生了旋转,而且这个作用一直在持续下去,不过这算是比较圆满的结果了。那么问题呢?问题就是我对碰撞器和刚体的概念越来越模糊。我们可以通过创建Cube、创建Sphere、创建Capsule分别创建对应的碰撞体并且可以通过代码来检测,因为这些组件自带了刚体和碰撞器,但是在我们上面的例子中,没有刚体结构同样可以发生碰撞,那么我们不禁要问一句:刚体和碰撞器究竟是什么关系?为什么没有刚体,碰撞器还能工作?如果没有碰撞器,只有刚体行不行?带着这样的疑问?博主找到了两个表格,希望对大家有所启发吧!
具体内容参见:
我自己都觉得有点晕了,唉,今天就先这样吧,什么时候想清楚了再回来总结吧!
本文出处:
【编辑推荐】
【责任编辑: TEL:(010)】
大家都在看猜你喜欢
头条外电热点原创外电
24H热文一周话题本月最赞
讲师:1人学习过
讲师:33人学习过
讲师:0人学习过
精选博文论坛热帖下载排行
《ASP.NET程序设计教程》是在总结多年ASP.NET教学和应用项目开发经验基础上编写完成的,编写过程中充分吸取了其他畅销实用教程的成功经验。...
订阅51CTO邮刊

参考资料

 

随机推荐