虚拟游戏操纵杆

ReactNative多个摇杆操控实现 ReactNative多个摇杆操控实现 需求 在ReactNative中实现多个摇杆操控,即多个滑块同时响应不同手指的触控。 调研准备阶段 使用 GestureResponderHandlers 伪代码 ... componentWillMount() { this._gesture = { // 在用户开始触摸的时候(手指刚刚接触屏幕的瞬间... 阅读详情

20121126

       为了内存,我不要NPC

是的,总算是把游戏成功放置于ipad上了,

但是,游戏运行速度是那么的不如意,卡爆了!

足足有400多M呢,特别是资源,大占据了内存空间,

So,我试着先不加载怪物上去,额,代码不熟悉就问主程了,

发现他说的毫无用处,什么不处理服务那边发来的消息就行了,

那只是不显示而已,怪物数据还是有啊,可是他那么的肯定,如果不处理是觉得没怪物数据的。

好了,不纠结,这本不是我的问题。

 

20121127

        为了内存,美工将地图优化

这一天,我可以说是烦躁了,什么什么嘛,

昨天还能生成ipa,今天又报内存溢出错误了,

我开始怀疑地图,于是将bin复原,结果一样。

唉,又新建项目,又配置,时间总是花在这种事情上!

总算是成功了,果然,地图改了,给力多了,生成只有350多M了。

运行速度也快了。

 

20121128

终于,flash发布ipa版本总算告一段落了。

现在开始接手pad版本任务需求了。

总算开始接触代码了,这是我所梦寐的呢。

第一个需求就是给游戏加一个虚拟的游戏操纵杆,

好了,今天就看代码了。

 

20121129

嗯,游戏操纵杆基本逻辑理清,

打算叫主程序那边写个接口函数的,

按照我给他的弧度计算玩家移动。

我只能说彻底无语,听不明白我意思,

还是我没听明白他的意思?他一定要我考虑人物旋转,

我现在都讲不清楚了!还是给大家看看我写的测试版吧:

package 
{
 import flash.desktop.NativeApplication;
 import flash.events.Event;
 import flash.display.Sprite;
 import flash.display.StageAlign;
 import flash.display.StageScaleMode;
 import flash.ui.Multitouch;
 import flash.ui.MultitouchInputMode;
    import flash.events.TouchEvent;
 import flash.events.MouseEvent;
 import flash.text.TextField
 import flash.utils.Timer;  
   import flash.events.TimerEvent;   /**
  * ...
  * @author ...
  */
 public class Main extends Sprite 
 {
  private var myTextField:TextField ;
  private var mySpriteNpc:Sprite ;
  private var mySprite:Sprite ;
  private var mySpriteBg:Sprite;
  private var touchMoveID:int = 0; 
  private var IsDown:Boolean = false;
  private var IsIn:Boolean = false;
  private var timer:Timer  public function Main():void 
  {
   stage.scaleMode = StageScaleMode.NO_SCALE;
   stage.align = StageAlign.TOP_LEFT;
 
   Multitouch.inputMode = MultitouchInputMode.TOUCH_POINT;
   
   mySpriteBg = new Sprite();
   mySpriteBg.graphics.beginFill(0x336600); 
   mySpriteBg.graphics.drawCircle(150, 150, 150);
   addChild(mySpriteBg); 
   
   
   mySprite = new Sprite(); 
   mySprite.graphics.beginFill(0x33ff99); 
   mySprite.graphics.drawCircle(150, 150, 25);
   addChild(mySprite);
   
   mySpriteNpc = new Sprite(); 
   mySpriteNpc.graphics.beginFill(0xff6699); 
   mySpriteNpc.graphics.drawCircle(400, 400, 25);
   addChild(mySpriteNpc);
   
   myTextField = new TextField(); 
   addChild(myTextField); 
   myTextField.width = 200; 
   myTextField.height = 20; 
   
   timer=new Timer(50);  
            //开始记时  
            timer.start();     //mySprite.addEventListener(TouchEvent.TOUCH_BEGIN, onTouchBegin); 
   mySprite.addEventListener(MouseEvent.MOUSE_DOWN, onTouchBegin); 
   timer.addEventListener(TimerEvent.TIMER,UpdateShow);  
   
  }
       private function onTouchBegin(event:MouseEvent):void
  { 
   myTextField.text="触摸开始";
   //stage.addEventListener(TouchEvent.TOUCH_MOVE, onTouchMove); 
   //stage.addEventListener(TouchEvent.TOUCH_END, onTouchEnd); 
   stage.addEventListener(MouseEvent.MOUSE_MOVE, onTouchMove); 
   stage.addEventListener(MouseEvent.MOUSE_UP, onTouchEnd); 
   IsDown = true;
   
  }   private function onTouchMove(event:MouseEvent)
  { 
   var temp1 : Number = Math.pow((mySprite.x - mySpriteBg.x), 2);
   var temp2 : Number = Math.pow((mySprite.y - mySpriteBg.y), 2);
   var radius : Number = Math.sqrt(temp1 + temp2);
   var rate : Number = get_rocker_dir();
   if (radius < 150)
   {
    //myTextField.text = "触摸移动中";
    trace(rate);
    mySprite.x = event.stageX-150; 
    mySprite.y = event.stageY - 150;
    IsIn = true;
   }
   
   if(radius > 150)
   {
    mySprite.x = Math.cos(rate) * 150;
    mySprite.y = Math.sin(rate) * 150;
    
    // myTextField.text="超出范围";
   }  } 
  
   private function UpdateShow(evt:TimerEvent):void 
   {  
    if (!IsIn || !IsDown)
    return;
   var rate : Number = GetRockerDir();
   
   var temp1 : Number = Math.pow((mySprite.x - mySpriteBg.x), 2);
   var temp2 : Number = Math.pow((mySprite.y - mySpriteBg.y), 2);
   var radius : Number = Math.sqrt(temp1 + temp2);
  
   mySpriteNpc.x += Math.cos(rate) * radius*0.09;
   mySpriteNpc.y += Math.sin(rate) * radius*0.09;
   evt.updateAfterEvent();   
    } 
    
  private function onTouchEnd(event:MouseEvent):void
  { 
   IsIn = IsDown = false;
   myTextField.text="触摸结束";
   //stage.removeEventListener(TouchEvent.TOUCH_MOVE, onTouchMove); 
   //stage.removeEventListener(TouchEvent.TOUCH_END, onTouchEnd); 
   stage.removeEventListener(MouseEvent.MOUSE_MOVE, onTouchMove); 
   stage.removeEventListener(MouseEvent.MOUSE_UP, onTouchEnd); 
   mySprite.x =  mySpriteBg.x;
   mySprite.y =  mySpriteBg.y;
  }
  public function   GetRockerDir() : Number
  {
   return Math.atan2(mySprite.y - mySpriteBg.y, mySprite.x - mySpriteBg.x);
  }   
 }

}


 

希望大家可以不腻/吝赐教,谢谢。
 
20121230
昨天的主程序说的什么要考虑旋转问题,今天无声中不了了之。因为脑残才会想到那吧,但是我确实陷进去了一会,
确实没写过3D,在3D主程序面前,我还是谦虚的回到了自己的工位,去想、考虑什么旋转问题,从更多的同学口中肯定了:这不过是脑残的想法!
好了,就这样。因为还是相信他们的能力,我选择了,我的弧度返回给他们,希望他们可以加一个接口函数,但事实证明:他们远远没有自己想的那么有能力,这么一个接口函数都加不了,硬是要距离、目标点、玩家移动帧数、、、、、好了,靠他们还不如自己写个了,那么我决定就写个鸡肋的函数了(其实函数写来并不鸡肋,但是真正用时,你才会知道....和某人一样SB): 
private function GetDesPos():Vector3D
{
   var Rate : Number = GetRockerDir();
   var NpcPos : Vector3D = gc_localHero.INSTANCE.position;
   var DesPos : Vector3D = new Vector3D();
   DesPos.x = NpcPos.x + Math.cos(Rate);
   DesPos.z = NpcPos.z - Math.sin(Rate);
   DesPos.y = 0;
   return DesPos;
}

 
 
 

 

40、实时增强现实游戏的交互方法评估 本文探讨了实时增强现实游戏中不同交互方法的有效性及用户体验。通过实验评估了基于触摸的虚拟操纵杆、触摸界面和持续的十字准线跟踪三种控制方式,并结合问卷调查与访谈分析其优劣。研究发现,尽管触摸平面在直观可用性方面得分较高,但玩家更倾向于使用熟悉的虚拟操纵杆,因其精确且易于操作;而十字准线方法虽具创新性和沉浸感,但复杂度较高。文章最后提出了针对各控制方法的优化建议,以提升实时AR游戏的整体体验。 阅读详情

相关推荐

Android游戏开发:实现虚拟操纵杆控制角色移动

Android,作为一种流行的移动操作系统,为游戏开发提供了丰富的可能性。它基于Linux内核,支持广泛的硬件平台,并拥有庞大的用户基础。开发者可以利用Android提供的API和工具进行创新和创造。开发一个Android游戏主要分为几个阶段:需求分析、设计、编码、测试和部署。在开发过程中,开发者需要熟悉Java或Kotlin编程语言,掌握Android SDK以及游戏开发引擎,如Unity或Unreal Engine。在安装完SDK之后,熟悉常用的API和工具包对于游戏开发至关重要。

weixin_33068055的博客 1136

vJoy虚拟操纵杆项目安装和配置指南

vJoy是一个开源的虚拟操纵杆项目,旨在为Windows操作系统提供虚拟操纵杆功能。该项目支持从Windows 7到Windows 10 1803的版本。对于更新的Windows版本,建议使用Fork版本。vJoy的主要编程语言包括C++、C和C#。 ## 2、项目使用的关键技术和框架 vJoy项目主要使用了以下关键技术和框架: - **C++和C语言**:用于驱动和核心功能的开发。 - **...

gitblog_01204的博客 1558

Unity5中触摸控制插件的导入与使用指南

除了提供基本的触摸控制功能之外,”Easy Touch”还允许开发者创建高度自定义的虚拟操纵杆和触摸按钮。这意味着游戏设计师可以根据游戏的风格和玩法需求,定制几乎任何类型的控制方案。通过调整操纵杆的大小、形状和颜色,或者修改按钮的布局和响应区域,游戏的用户体验可以得到大幅度提升。自定义程度的提高不仅仅止于视觉上的调整,插件还允许开发者对操纵杆和按钮的动态行为进行深入的编程控制。例如,操纵杆可以设置为不同的摩擦力、回弹速度和敏感度,而按钮则可以设置为按下和释放时的动画效果以及声音反馈。

weixin_35751194的博客 873

unity2022版本 实现手机虚拟操作杆

在许多移动游戏中,虚拟操纵杆是一个重要的用户界面元素,用于控制角色或物体的移动。本文将介绍如何在Unity中实现虚拟操纵杆,提供了一段用于移动控制的代码。我们将讨论不同类型的虚拟操纵杆,如固定和跟随,以及如何在实际游戏中使用这些操纵杆。

baidu_38766085的博客 2206

HTML虚拟摇杆、虚拟手柄(源码)

演示地址:http://tools.pt.wsing.cn/VirtualRocker/

虚拟操纵杆设置(源码)

可控制角色移动 旋转 获取决色坐标;本例以游动的小鱼为角色;还角度变化设置;

njoy for android安卓,游戏虚拟操纵杆

Play multiplayer games with your friends by turning your phones into joysticks!nJoy is a complete PC remote controlling solution!nJoy includes a gaming joystick layout and a comprehensive desktop cont...

weixin_39954908的博客 6594

pixijs手游-虚拟键盘demo

现在很多手游都有虚拟按钮–尤其是那些需要操作高的。那么我们也要紧跟时代步伐,开发一个虚拟按钮插件。http://blog.youkuaiyun.com/cdnight/article/details/50751832

3个步骤搞定虚拟操纵杆部署:vJoy完全配置指南

当你准备在不同Windows系统上部署vJoy时,首先需要确认你的环境是否满足运行要求。不同版本的Windows对驱动签名和系统组件有不同限制,这直接影响安装成功率。 ### 诊断系统兼容性:3步预检流程 首先打开系统信息面板(按下Win+R输入msinfo32),查看操作系统版本和系统类型(32位/64位)。vJoy官方推荐在Windows 7至Windows 10 1803版本上运行,如果你

gitblog_01034的博客 885

在PC上模拟手机游戏上的一个操作杆功能

在PC上模拟手机游戏上的一个操作杆功能,验证测试用的

游戏杆模拟鼠标程序(非常好用)

你的鼠标坏了?!有游戏杆吗?好!我这里正好有一个免费软件,可以用游戏杆代替鼠标(Cool)免去你的烦恼。

vJoy虚拟操纵杆完全指南:从零开始掌握Windows输入模拟技术

vJoy是一款开源的虚拟操纵杆驱动程序,能够在Windows系统中模拟标准游戏手柄、摇杆等输入设备。这个强大的工具让用户通过软件方式实现键盘、鼠标到虚拟操纵杆的输入映射,为游戏玩家和开发者提供高度自定义的控制方案。无论是游戏控制优化还是软件测试,vJoy都能提供稳定可靠的虚拟输入支持。 ## 一、vJoy核心功能解析 💡 ### 1. 跨平台兼容性支持 vJoy虚拟操纵杆完全兼容Direct

gitblog_00660的博客 956

h5仿游戏操作杆 操作杆

h5仿游戏操作杆 游戏操作杆 仿王者荣耀 吃鸡 游戏操作杆 h5仿游戏操作杆 游戏操作杆 仿王者荣耀 吃鸡 游戏操作杆

如何快速配置vJoy虚拟操纵杆:新手避坑指南

vJoy虚拟操纵杆是一款强大的开源工具,能够在Windows系统中创建虚拟输入设备,为游戏开发、自动化测试和辅助功能提供灵活的输入解决方案。本指南将帮助您快速上手并避免常见配置问题。 ## 需求分析:为什么需要虚拟操纵杆技术 在现代应用开发中,虚拟输入设备技术已成为不可或缺的工具。vJoy虚拟操纵杆通过软件方式模拟标准游戏控制器,为以下场景提供关键支持: - **游戏开发测试**:无需物理设

gitblog_00944的博客 590

二~六键游戏操纵杆(gamepad)控制程序

二~六键游戏操纵杆(gamepad)控制程序

R语言绘图进阶:五大工具高效组合多图(cowplot、patchwork、layout、par、gridExtra)

本文详细介绍了R语言中五大高效组合多图的工具:cowplot、patchwork、layout、par和gridExtra。针对不同场景提供了实用指南,帮助数据分析师解决图表排版难题,提升报告专业度。特别推荐cowplot用于ggplot2图形组合,patchwork提供最简洁语法,layout则支持完全自定义布局。

weixin_42544663的博客 288

如何快速安装vJoy虚拟操纵杆:完整配置指南与实用技巧

vJoy是一款强大的开源虚拟操纵杆工具,专为Windows系统设计,让用户无需物理设备即可模拟操纵杆输入。无论是游戏开发测试、远程控制还是无障碍操作,vJoy都能提供稳定高效的虚拟摇杆解决方案。本文将带你一步步完成安装配置,轻松上手这款实用工具! ## ???? 准备工作:安装必备环境 在开始vJoy的安装之旅前,请确保你的系统满足以下条件: - **操作系统**:Windows 7至Windo...

gitblog_00570的博客 537

FPGA可重构技术

介绍FPGA 可重构技术的实现方法,包括全局重构和部分重构

航天领域资深码农,型号经验丰富,一线干货分享 1989

4步上手vJoy虚拟操纵杆:从安装到实战的完整指南

vJoy虚拟操纵杆是一款开源的虚拟输入设备工具,能够在Windows系统中模拟标准游戏操纵杆功能,让用户通过软件方式实现手柄、摇杆等控制器的输入映射。无论是游戏玩家自定义控制方案,还是开发者测试输入设备接口,这款工具都能提供稳定的虚拟设备支持,且完全兼容主流游戏和模拟软件。 ## 一、功能解析:vJoy虚拟操纵杆核心特性💻 ### 1. 跨应用输入模拟 作为系统级虚拟设备驱动,vJoy能被所

gitblog_00034的博客 1008

远程桌面(RDP)共享USB设备全攻略:不止Hyper-V,你的加密狗和CH340串口也能远程用

本文详细介绍了远程桌面(RDP)共享USB设备的完整解决方案,包括加密狗和CH340串口设备的远程使用技巧。通过RemoteFX USB重定向技术,用户可以在远程会话中无缝使用本地USB设备,提升工作效率。文章涵盖企业级配置、典型设备实战案例及高级故障排除方法,是远程工作者的实用指南。

weixin_42522964的博客 334

YOLOv11改进 - 卷积Conv | PConv(Pinwheel-shaped Conv): 风车状卷积用于红外小目标检测 | AAAI 2025

本文介绍了风车状卷积(PConv)和基于尺度的动态(SD)损失在YOLOv11中的结合应用。PConv采用不对称填充,通过特殊结构设计、卷积运算和分组卷积技术,能更好地适应红外小目标的像素高斯空间分布,在少量增加参数的情况下极大扩展感受野。SD损失可根据目标大小动态调整尺度和位置损失的影响。我们将PConv集成到YOLOv11的主干网络低层,并在相关配置文件中进行设置。实验证明,YOLOv11 - PConv在IRSTD - 1K和SIRST - UAVB数据集上取得显著性能提升,验证了方法的有效性和泛化能

魔改工程师的博客 1335

5步掌握vJoy虚拟操纵杆:从零开始的完整使用指南

vJoy虚拟操纵杆是一款功能强大的开源虚拟输入设备工具,能够在Windows系统中模拟标准游戏操纵杆功能。通过软件方式实现手柄、摇杆等控制器的输入映射,这款虚拟操纵杆工具为游戏玩家和开发者提供了高度灵活的控制方案自定义能力。 ## 一、核心功能深度解析 💡 ### 1. 多设备虚拟化支持 vJoy虚拟操纵杆驱动允许系统同时创建多个虚拟操纵杆实例,每个设备可独立配置轴数量、按钮映射和POV视角

gitblog_00866的博客 847

【RT-DETR实战】RT-DETR实战手记(200):端侧实时目标检测,下一步往哪儿走?

昨天深夜调一个模型部署,在树莓派4B上跑RT-DETR-nano,帧率死活卡在8FPS上不去。量化也做了,算子也优化了,内存对齐也检查了,可就是离实时检测的底线还差一截。盯着终端里跳动的数字,突然意识到——我们可能正在接近当前技术路径的瓶颈。端侧实时目标检测的下一个突破口,恐怕不在现有框架的修修补补里。

企鹅码农的专属播客,分享10多年的实战案例和经验解读,包含YOLO、RT-DETR、AI等各个工作领域。 187
上一篇: Air Mobile As3 App
下一篇: ipad2/3分辨率
DesDestroy
博客等级 码龄14年 84粉丝 78原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值