暴走涂鸦ugui 虚拟摇杆杆在哪

Android虚拟摇杆 - lb8820265的日志 -
电子工程世界-论坛
请完成以下验证码
Android虚拟摇杆
已有 933 次阅读 21:19
|个人分类:|
& & & 由于经常前端时间做了个蓝牙小车,采用虚拟摇来控制就显得比较重要了。下面是RockerView.java代码,有详细解释。package com.example.lb.import android.content.Cimport android.graphics.Bimport android.graphics.BitmapFimport android.graphics.Cimport android.graphics.PointF;import android.graphics.Rimport android.util.AttributeSimport android.util.Limport android.view.MotionEimport android.view.Vimport android.view.ViewTreeOpublic class RockerView extends View {
//固定摇杆背景圆形的X,Y坐标以及半径
private float mRockerBg_X;
private float mRockerBg_Y;
private float mRockerBg_R;
//摇杆的X,Y坐标以及摇杆的半径
private float mRockerBtn_X;
private float mRockerBtn_Y;
private float mRockerBtn_R;
private Bitmap mBmpRockerBg;
private Bitmap mBmpRockerBtn;
private PointF mCenterPoint;
//按下的确定标志位
private boolean mRockerSure;
public RockerView(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
// 获取bitmap
mBmpRockerBg = BitmapFactory.decodeResource(context.getResources(), R.drawable.rocker_bg);
mBmpRockerBtn = BitmapFactory.decodeResource(context.getResources(), R.drawable.rocker_btn);
getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
// 调用该方法时可以获取view实际的宽getWidth()和高getHeight()
public boolean onPreDraw() {
// TODO Auto-generated method stub
getViewTreeObserver().removeOnPreDrawListener(this);
Log.e("RockerView", getWidth() + "/" +
getHeight());
mCenterPoint = new PointF(getWidth() / 2, getHeight() / 2);
mRockerBg_X = mCenterPoint.x;
mRockerBg_Y = mCenterPoint.y;
mRockerBtn_X = mCenterPoint.x;
mRockerBtn_Y = mCenterPoint.y;
//确定View的边框大小,按钮和背景的比例
float tmp_Bg = mBmpRockerBg.getWidth() / (float)(mBmpRockerBg.getWidth()*2 + mBmpRockerBtn.getWidth());
mRockerBg_R = tmp_Bg * getWidth() / 2;
float tmp_Btn =
mBmpRockerBtn.getWidth()/ (float)(mBmpRockerBg.getWidth()*2 + mBmpRockerBtn.getWidth());
mRockerBtn_R =tmp_Btn* getWidth() / 2;
return true;
new Thread(new Runnable() {
public void run() {
// TODO Auto-generated method stub
while(true){
//系统调用onDraw方法刷新画面
RockerView.this.postInvalidate();
Thread.sleep(20);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}).start();
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
canvas.drawBitmap(mBmpRockerBg, null,
new Rect((int) (mRockerBg_X - mRockerBg_R),
(int) (mRockerBg_Y - mRockerBg_R),
(int) (mRockerBg_X + mRockerBg_R),
(int) (mRockerBg_Y + mRockerBg_R)),
canvas.drawBitmap(mBmpRockerBtn, null,
new Rect((int) (mRockerBtn_X - mRockerBtn_R),
(int) (mRockerBtn_Y - mRockerBtn_R),
(int) (mRockerBtn_X + mRockerBtn_R),
(int) (mRockerBtn_Y + mRockerBtn_R)),
public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
if (event.getAction() == MotionEvent.ACTION_DOWN){
//当点触屏幕且在圆圈内
if (Math.sqrt(Math.pow((mRockerBg_X - (int) event.getX()), 2) + Math.pow((mRockerBg_Y - (int) event.getY()), 2)) &= mRockerBg_R) {
mRockerBtn_X = (int) event.getX();
mRockerBtn_Y = (int) event.getY();
mRockerBg_X = (int) event.getX();
mRockerBg_Y = (int) event.getY();
mRockerSure=true;
else if ( event.getAction() == MotionEvent.ACTION_MOVE&&mRockerSure) {
//当触点滑动且之前触点在圆圈内
// 当触屏区域不在活动范围内
if (Math.sqrt(Math.pow((mRockerBg_X - (int) event.getX()), 2) + Math.pow((mRockerBg_Y - (int) event.getY()), 2)) &= mRockerBg_R) {
//得到摇杆与触屏点所形成的角度
double tempRad = getRad(mRockerBg_X, mRockerBg_Y, event.getX(), event.getY());
//保证内部小圆运动的长度限制
getXY(mRockerBg_X, mRockerBg_Y, mRockerBg_R, tempRad);
} else {//如果小球中心点小于活动区域则随着用户触屏点移动即可
mRockerBtn_X = (int) event.getX();
mRockerBtn_Y = (int) event.getY();
if(mRockerChangeListener != null) {
//若是需要限定十字方向则不要不需注释这段话
if(Math.abs(mRockerBtn_X - mRockerBg_X)&Math.abs(mRockerBtn_Y - mRockerBg_Y)){
mRockerBtn_Y = mRockerBg_Y;
mRockerBtn_X = mRockerBg_X;
mRockerChangeListener.report(mRockerBtn_X - mRockerBg_X, mRockerBtn_Y -mRockerBg_Y);
} else if (event.getAction() == MotionEvent.ACTION_UP) {
//当释放按键时摇杆要恢复摇杆的位置为初始位置
mRockerBtn_X = mCenterPoint.x;
mRockerBtn_Y = mCenterPoint.y;
mRockerBg_X = mCenterPoint.x;
mRockerBg_Y = mCenterPoint.y;
mRockerSure=false;
if(mRockerChangeListener != null) {
mRockerChangeListener.report(0, 0);
return true;
public double getRad(float px1, float py1, float px2, float py2) {
//得到两点X的距离
float x = px2 - px1;
//得到两点Y的距离
float y = py1 - py2;
//算出斜边长
float xie = (float) Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));
//得到这个角度的余弦值(通过三角函数中的定理 :邻边/斜边=角度余弦值)
float cosAngle = x /
//通过反余弦定理获取到其角度的弧度
float rad = (float) Math.acos(cosAngle);
//注意:当触屏的位置Y坐标&摇杆的Y坐标我们要取反值-0~-180
if (py2 & py1) {
* @param R
圆周运动的旋转点
* @param centerX 旋转点X
* @param centerY 旋转点Y
* @param rad 旋转的弧度
public void getXY(float centerX, float centerY, float R, double rad) {
//获取圆周运动的X坐标
mRockerBtn_X = (float) (R * Math.cos(rad)) + centerX;
//获取圆周运动的Y坐标
mRockerBtn_Y = (float) (R * Math.sin(rad)) + centerY;
public float getR(){
return mRockerBg_R;
RockerChangeListener mRockerChangeListener = null;
public void setRockerChangeListener(RockerChangeListener rockerChangeListener) {
mRockerChangeListener = rockerChangeL
public interface RockerChangeListener {
public void report(float x, float y);
}}在布局文件中添加如下:&com.example.lb.lbrocker.RockerView
android:id="@+id/rockerView1"
android:layout_width="300dp"
android:layout_height="300dp"
android:layout_alignParentBottom="true"
android:layout_marginLeft="0dp"
android:layout_marginBottom="0dp"/&然后在Activity中添加如下函数:rockerView1 = (RockerView)findViewById(R.id.rockerView1);rockerView1.setRockerChangeListener(new RockerView.RockerChangeListener() {
public void report(float x, float y) {
rcOutputs[0]=(int)(y/rockerView1.getR()*50);
rcOutputs[1]=(int)(x/rockerView1.getR()*50);
getSupportActionBar().setTitle("X1:" +rcOutputs[0]
Y1:" + rcOutputs[1]+"
X2:"+rcOutputs[2]+"
Y2:"+rcOutputs[3]);
}});好了,有了这三步就可以了,当然还有些其他的小地方要注意,比如添加图片资源,添加定义,引入相关包等等的下面是源代码:
作者的其他最新日志
评论 ( 个评论)
EEWORLD 官方微信
Powered by暴走涂鸦下载_暴走涂鸦安卓版/ios下载v1.0_暴走涂鸦下载安装免费下载暴走涂鸦当前位置:&&&猜你喜欢热门游戏暴走涂鸦画面简洁,玩法轻松。更有4V4大暴走!快加上朋友,一起来战斗吧!游戏类型:游戏大小:165.09MB游戏评分:80更新时间:苹果预约游戏介绍《暴走》是一款油彩动作类电竞手游,操作,轻松上手!其独特的喷墨战斗横生!4V4排位模式,强调团队协作; 精美炫酷时装,打造百变造型,丰富时尚装备,助你轻松涂地大战,轻松秒抢人头,赢得比赛!马上加入《暴走涂鸦》吧,大战在即,就差你了!游戏截图游戏攻略热门资讯玩家聚焦自打初代高达动画中的爱美号使用控制单元攻击开始,浮游炮这种能够遥控进行远程打击的武器就风靡高达世界数十年,还在其他作品中成为高级的武装系统。在《敢达争锋对决》之中,也实装里历代高达中的搭载浮游炮的机体,这其中就...皇室战争5月3日(今天)就要更新了,下面小编为大家带来本次更新的内容汇总以及一些要注意的细节改动。官方预告 【更新预告】第一弹!实时观战模式 更新内容1: - 巅峰对决:可选择观看各阶竞技场中的最佳对战。 - 友谊战:实时...由万代南梦宫(上海)商贸有限公司和上海恺英网络科技有限公司,联合打造发行的正版敢达动作对战手游《敢达争锋对决》iOS版本已于今日首发上线!现在您就可以通过《敢达争锋对决》官网或者AppStore下载到这款游戏。正版原作授权、...激情热血的对抗与简单公平的规则,使得《昆仑墟》的PK系统显得更加纯粹,也受到了众多玩家的推崇。就在近日,《昆仑墟》再次重磅推出了3V3竞技PK排位赛,各路高手齐聚洪荒战场,巅峰修真对决一触即发!赶快紧跟小编的步伐来了解...在这个夏日,最火爆的话题绝对当属四年一届的世界杯,梅西“慌得一批”、内马尔“蹩脚假摔”,其刺激程度和“造梗”数量远远超出了所有球迷的预期。而与此同时,素有全民跑酷之称的多酷游戏人气力作《汤姆猫跑酷》也将迎来自己...由喜羊羊之父黄伟明亲自监制的《开心超人》手游已经开启全网预约。玩家可以提前去TapTap预约游戏赢得限定的内测服体验资格。《开心超人》手游研发公布后,既有十分众多的粉丝前提询问相关游戏问题。在宣布《开心超人》手游化的...乐趣《不朽之城》是一款以仙侠题材为背景的经典策略回合类H5游戏。游戏将于日上午10点首发上线。《不朽之城》恢宏写意的中国风元素,带你领略飞天入地、气势磅礴的神魔大战;跌宕起伏的剧情线路,带你肆意畅游悠悠三千...经历十五年风风雨雨的传奇世界IP,在这个充满激情的夏天迎来了“新生”,由超级玩家谢霆锋代言助威的首款3D正版传世IP手游《传奇世界3D》横空出世!《传奇世界3D》3V3争霸赛即将在7月5日正式拉开帷幕,热血战斗一触即发,和你的...漫威影业布局10年之久的高潮作品《复仇者联盟3》已在全球席卷21亿美元!在漫威世界中本次的最大赢家灭霸以其掌握力量、时间、空间、灵魂、现实和心灵六大宝石一举完成了全宇宙可持续发展大计!现在在《敢达争锋对决》这个幻之战场...银汉游戏2016年首款代理发行的3D古风武侠动作手游《侠隐江湖》今日全平台公测!即日起,玩家可以在各手机应用商店搜索并下载《侠隐江湖》手游,开启精彩刺激的江湖之旅。为庆祝游戏公测,官方为大家准备丰富活动,让你在畅爽江...冬季来临,大街上已经有了圣诞的气息了呢。而我们心中最完美的圣诞圣地一定在圣诞村:那银白色的世界,圣诞树,圣诞老人,姜饼人,雪橇!《仙境传说RO:守护永恒的爱》全新EP3.0正在制作中,圣诞村将在圣诞节来临前开放,12月圣...由万代南梦宫(上海)商贸有限公司和上海恺英网络科技有限公司联合打造发行的正版敢达动作对战手游《敢达争锋对决》二测今日火爆开启!本次测试为安卓版本,测试周期为三周,将采取删档模式进行。想要体验这款在手机端拥有完美动作...热门评论《暴走涂鸦》:“我们只是借鉴了一下”
今年3月初,《部落冲突:皇室战争》正式登陆国区App Store平台,短短一周之后,手游圈内的朋友大多已被“三周完成山寨换皮”的《全名三国大战》刷屏了。
这款成都雪隼研发的“像素级复刻版“《部落纷争:皇室争霸》,在舆论上受到了玩家和媒体的一致谴责,并且还在GDC上被当成反面教材点名批评,让国人尴尬不已,然而在当时还是受到了一些渠道的追捧。时至今日,这个换皮游戏在网上还有一些踪迹可寻,从下面那张图片来看,和原作比起来还是差距很大的。
再来说另一个例子。《守望先锋》在正式上架之后就开始疯狂吸金,短短9天狂揽18亿销售额,获得了5月全球销量最佳。这款因被家长上书并被亲切地称为“守望屁股”的FPS凭借暴雪精品的口碑、良心的优化、独到的角色和技能以及令人欲罢不能的快节奏战斗,很快在玩家中掀起了一阵“吸×”狂潮,以至于有的玩家进入了网警监视名单……
而距离《守望先锋》发售后不过20多天,网上又曝出一则消息。在5月22日(“守望”正式上架之前)的某个发布会上,就有中国开发者展示了号称“尚无可替代产品”的国内首款FPS+MOBA手游——《泰坦传奇》。毫无疑问,国产厂家这一次毫不掩饰的山寨行为再一次令业界哗然,至于后来开发者“面向移动平台不与OW对抗”“这是技术展示,正式上线后与OW完全不同”的言论,也被湮没在一片声讨之中。
讽刺的是,守望先锋的前身正是“泰坦”项目
社交网络覆盖面的延展,以及玩家、媒体版权意识的提升,让国内越来越多的山寨产品难以遁形。当然,凡事总有意外。比如本文真正的主角《暴走涂鸦》,一款宣传低调,隐于玩家视野的高仿品。
像素级山寨的《全民三国大战》毕竟换了层皮,运用《守望先锋》资源的《泰坦传奇》还是有部分角色不敢做绝。而这款《暴走涂鸦》,则是从外观到内核,毫无掩饰地对《喷射战士》进行了“借鉴”,甚至还被人当成了《喷射战士》的移动版……
来看看主城界面,一样的绿色巨塔,一样的邮筒位置,一样的战斗标示。除了手机端的UI按钮位置以及画质效果,《暴走涂鸦》对《喷射战士》的主城进行了高度还原,包括上面左图的商店位置以及长楼梯,不过《暴走涂鸦》的实际地图应该要小一些。
事实上,想要在美术上找到与《喷射战士》的差异真的很困难,大部分界面都能说明这个问题。
画面虽清晰但生硬,没有光影,这是我的第一观感(左图为原版《喷射战士》,右图为仿制品《喷射战士》,下同)
“界面虽然一样,但是战斗可以做的不同啊”。抱着这样的期待,笔者进入了匹配竞技。随便建立了一个房间,选用默认的“城市广场”地图,等了一会儿就进入了战斗。
不出所料,战斗玩法也和《喷射战士》如出一辙,使用各种武器对地面、墙面进行喷涂占地,顺便击杀玩家,墨水(弹药)用完就变身乌贼吸取同色颜料……是不是有一种强烈的既视感?
地图布局和地形要点完全一致
不过身为手游的《暴走涂鸦》并没有加上辅助瞄准,对战中对弹道也有一定预判要求,加上不怎么灵敏的视角移动,以及并不流畅的跳跃和技能操作,很是影响战斗体验。
好在主要的胜利条件是涂鸦占地,多人对战时可能会根据武器组合不同而衍生出“一人杀人多人占地” “多人保一人占地”等战术,保留了一定的策略性和趣味性。
同为最多支持4对4的实时对战模式
看了以上的对比,也就不用笔者再对枪械进行一一比对了。美术资源高度一致,战斗模式一模一样,武器服装照搬挪用,《暴走涂鸦》对《喷射战士》在移动端原子级复刻,已是显而易见。
目前这款作品已经,介绍是这么写的:
《暴走涂鸦》与《喷射战士》主要有三点不同,一是针对手机端修改了操作键位,二是美术品质大幅下降,三是战斗流畅度和操控体验的弱化。然而这三点,恰恰是手游对比主机游戏理所当然的缺陷,并不算差异。
类比市面上其他TPS/FPS,《暴走涂鸦》最大的特色正是它仿造《喷射战士》的游戏模式,带给国人少见的休闲风却强竞技的射击体验,虽然这种体验并不完善。
手机上的TPS/FPS都这么玩的
《喷射战士》在国内的知名度相对有限,这和Wii U国内的购买量以及网络环境有一定关系,此类休闲而趣味性强的强交互对战模式——尤其是移动端——在国内尚属细分领域的蓝海。
从市场角度来看,避免竞品红海本是无可厚非,但从研发层面看,开发团队未免有些敷衍。他们能还原原作的联机战斗,保留多枪械、颜料炸弹、乌贼形态、乌贼跳跃和实时匹配等特点,已经展现了一定的技术能力,却不愿意对核心玩法甚至美术资源进行深度挖掘和延展,做出差异化的特色,无异于东施效颦,研发团队“经历了8个多月的精心研发”的言论显得站不住脚。
更不要说目前版本还有相当多的Bug
远在日本的任天堂,可能还不知道有这么一款完全照搬但低调宣传的产品已经中国诞生,从过往的情形来看,老任对山寨作品的应对速度和打击手段不如欧美厂商来得直接。
国内手游市场虽然蹭IP和山寨风横行,经历了《全民三国大战》《泰坦传奇》——更早之前还有《卧龙传说》——这些对知名产品像素级山寨的洗礼后,舆论上恐怕也无法接纳从头到脚照搬他人的《暴走涂鸦》。这款产品的性质,已经越过了“道德上错误,市场上正确”的底线,他们并没有开发产品,而是直接复刻移植,而且做的并不完美。
《影之刃》《安魂曲》《乱斗西游》等国产游戏说明了我们不乏制作精品的能力,中国游戏市场期待《喷射战士》这种高度的产品,但不是以《暴走涂鸦》这种方式出现的。国产游戏需要站在巨人肩头向前看,而不是总在琢磨如何比照着巨人雕个肩膀。
读者 游鱼戏虾
成都跑团安利人,半个手游从业者,公众号:苍极,对游戏发点儿biǎ言
登录触乐账号
请登录后发表评论、没有账号请
使用社交账号登录
绑定手机号
根据相关规定,无法对未认证真实身份信息的用户提供跟帖评论服务,请尽快绑定手机号完成认证。
共有条评论您的位置:&>& >
> 暴走英雄坛滑板鞋怎么得 暴走英雄坛滑板鞋在哪
暴走英雄坛滑板鞋怎么得 暴走英雄坛滑板鞋在哪[图]
字体大小:【 |
10:50:18&&&
类型:角色扮演大小:38.3MB评分:10平台:标签:
最近进行了一次版本更新,又上线了一些新的物品和道具,下面友情小编为大家带来的是滑板鞋的获取方法,还不清楚的小伙伴一起看看吧!
滑板鞋怎么得
方法一:好色仙人
1、先要获得苍井的写真集,这个需要选择自己护送苍老师获得。
2、然后拿着写真集去找好色仙人,他就会给你啦!
(需要完成伊贺派的入门任务哦!如果你是女性角色可以直接获取)
方法二:打
打副本这个方法比较看运气,还是建议大家用方法一吧!
专题类型:休闲
更新时间:
专题标签:闯关剧情英雄减压
暴走英雄坛是一款武侠题材的挂机手游,游戏以漫画形式展示出来,玩家在这里可以体验到各种经典的武侠剧情,而挂机玩法也不会浪费玩家很多...
5.0友情指数
0人0人
猜你喜欢闯关剧情英雄减压
闯关游戏非常具有挑战性,而且难度等级不一,环环相扣,需要玩家策略性的一步步的闯关,才能获得成功,下面就让友情小编来为您展示一下本站的闯关手机游戏合集所包含的闯关...
相关游戏其他版本
暴走英雄坛游戏资讯
暴走英雄坛攻略心得29
暴走英雄坛游戏问答24
(您的评论需要经过审核才能显示)暴走涂鸦下载_暴走涂鸦开发商_暴走涂鸦九游官网_暴走涂鸦九游礼包_k73电玩之家
类似暴走涂鸦的手游简介
《暴走涂鸦》是一款由九游代理的Q版射击类游戏!相信看过视频的玩家会有一种似曾相识感觉,暴走涂鸦不论是人设还是地图设计,几乎和任天堂旗下的《喷色卡通/Splatoon/喷射美少女》几乎一模一样,不得不感叹一下这个游戏山寨/抄袭的能力有多么的强悍,下面来介绍几款类似的手游,玩家可以了解一下!

我要回帖

更多关于 unity3d 虚拟摇杆 的文章

 

随机推荐