位置: 编程技术 - 正文

RPG 游戏地图卷动简单API(rpg好玩地图)

编辑:rootadmin
在传统RPG 游戏中是非常常见的,怎么实现一个简单的地图卷动呢!其实做法很简单,就是检测何时需要同步相机与角色的XY轴.【第一步 创建一个scene】 BigMapBg 场景大地图, MainCamera 主相机 , role (球体) , ViewBg 可视区域。更多精彩请点击【狗刨学习网】在 MainCamera 上帮上 TestGame 脚本, 设置 role ,viewPos 预设下面附上代码[code]csharpcode:public class TestGame : MonoBehaviour{ public GameObject role; public GameObject viewPos; private GameRole _gameRole; private float _viewPosZ; GameObject cameGo; void Awake() { cameGo = GameObject.Find("Main Camera"); _gameRole = new GameRole(role, cameGo); _viewPosZ = viewPos.transform.position.z; } void Update() { Vector3 vect = Vector3.zero; if (Input.GetKeyDown(KeyCode.W)) _gameRole.Move(GameRole.MoveType.Up); else if (Input.GetKeyDown(KeyCode.A)) _gameRole.Move(GameRole.MoveType.Left); else if (Input.GetKeyDown(KeyCode.D)) _gameRole.Move(GameRole.MoveType.Right); else if (Input.GetKeyDown(KeyCode.S)) _gameRole.Move(GameRole.MoveType.Down); //Vector3 cameVect = cameGo.transform.position; //cameVect.z = _viewPosZ; //viewPos.transform.position = cameVect; }}API 代码[code]csharpcode:public class GameRole{ public enum MoveType { Up, Down, Left, Right } private GameObject _roleGo; private GameObject _cameGo; private const float SPEED = 5f; public Vector2 max_map = new Vector2(, ); public Vector2 max_came = new Vector2(, ); public GameRole(GameObject roleGo, GameObject cameGO) { _roleGo = roleGo; _cameGo = cameGO; } public void Move(MoveType type) { Vector3 speed = Vector3.zero; switch (type) { case MoveType.Up: speed = new Vector3(0, SPEED, 0); break; case MoveType.Down: speed = new Vector3(0, -SPEED, 0); break; case MoveType.Left: speed = new Vector3(-SPEED, 0, 0); break; case MoveType.Right: speed = new Vector3(SPEED, 0, 0); break; } MoveRole(speed); MoveCame(speed); } /// <summary> /// 移动相机 /// </summary> /// <param name="curSpeed"></param> private void MoveCame(Vector3 curSpeed) { Vector3 camePos = _cameGo.transform.position; Vector3 rolePos = _roleGo.transform.position; rolePos.z = camePos.z; Vector3 dVect = rolePos - camePos; float dx = max_map.x - Mathf.Abs(dVect.x); // 角色.x - 地图.x float dy = max_map.y - Mathf.Abs(dVect.y); // 角色.y - 地图.y float dxC = max_came.x - Mathf.Abs(rolePos.x); // 角色.x - 可见区域.x float dyC = max_came.y - Mathf.Abs(rolePos.y); // 角色.y - 可见区域.y if (dxC >= 0 && dyC >= 0); // x,y 都没达到最大 else if (dx > 0 && dxC >= 0) // x 没有达到最大 rolePos.y = camePos.y; else if (dy > 0 && dyC >= 0) // y 轴没有达到最大 rolePos.x = camePos.x; else return; _cameGo.transform.position = rolePos; } /// <summary> /// 移动角色 /// </summary> /// <param name="curSpeed"></param> private void MoveRole(Vector3 curSpeed) { Vector3 curPos = _roleGo.transform.position; Vector3 tagPos = curPos &#; curSpeed; // 在角色可移动区域内 if (isInRec(tagPos, max_map)) _roleGo.transform.position = tagPos; } private bool isInRec(Vector3 pos, Vector2 Rect) { if (Rect.x - Mathf.Abs(pos.x) >= 0 && Rect.y - Mathf.Abs(pos.y) >= 0) return true; return false; }}

推荐整理分享RPG 游戏地图卷动简单API(rpg好玩地图),希望有所帮助,仅作参考,欢迎阅读内容。

RPG 游戏地图卷动简单API(rpg好玩地图)

文章相关热门搜索词:rpg好玩地图,rpg游戏大地图,rpg地图包,rpg游戏地图素材,rpg游戏大地图,rpg地图图片,地图卷轴有什么用,rpg地图包,内容如对您有帮助,希望把文章链接给更多的朋友!

关于XML的读写操作以及查询操作 我们在做一些项目的时候,往往会用XML来配置内部成员,部署他们之间的关系,使得程序运行起来不至于太混乱,今天就稍微讲解一下关于XML的一些用

设计模式--简单工厂模式在unity3d里面的使用 来自

Unity3D 帧数修改 1、在Quality(质量)设置里把帧数设定关闭之后才能在代码中修改游戏运行的帧数2、在Unity中新建脚本UpdateFrame.cs,编写如下代码usingUnityEngine;usingSystem.Collec

标签: rpg好玩地图

本文链接地址:https://www.jiuchutong.com/biancheng/382582.html 转载请保留说明!

上一篇:Unity 2D打造《影之刃》新版本新武侠新玩法(unity 2danimation)

下一篇:关于XML的读写操作以及查询操作(xml文件的数据如何读取)

  • 出租人融资租赁发生的初始直接费用
  • 售后回租利息可以抵税吗
  • 子公司的所得税是单独缴纳吗
  • 代扣个人所得税现金流入哪个科目?
  • 生产企业购入材料怎么做分录
  • 分公司如何缴纳企业所得税
  • 抵减的增值税如何记账
  • 公司未开展业务就没有债权债务吗
  • 超市里的摊位租金贵吗
  • 白条确认收款后还能分期吗
  • 企业员工应付未付的工资该如何写其会计分录?
  • 存出保证金的账务处理
  • 出口退税退的是进项税还是销项税
  • 年末所得税账务处理
  • 固定资产金额小于5000元,可以不一次性税前扣除吗
  • 去年的暂估成本今年如何冲掉
  • 劳务费个人所得税税率
  • 收回代付费用用什么科目
  • 结转基本生产成本
  • win10一段时间不动黑屏
  • 收到生育津贴的短信是真的吗
  • 土地使用税从价和从租计算有区别吗
  • 企业库存太多后果
  • 公司雇用临时工人工资需要到税务局开发票吗
  • 股东帮公司垫付货款
  • windows7使用方法
  • 应付账款与其他应付款科目调整
  • vue3使用vueup/vue-quill富文本、并限制输入字数
  • 企业延期收款
  • php自动执行函数
  • 基于Selenium的自动化测试平台设计与实现
  • vue process.env.node_env
  • PHP实现微信无感登陆
  • 编译安装php7.2
  • 装修阶段监理注意事项
  • 班迪录屏软件录制框怎样在ppt上一直指定
  • 开具销项负数发票 矿产品什么意思
  • 固定资产计提折旧的方法
  • 人工费没有发票咋入帐
  • 以前年度漏记收入
  • 资产负债表所有者权益怎么算
  • 启动mysql的语句
  • protobuf 文档
  • 其他资本公积主要包括
  • 中级财务会计计算题
  • 技术人员工资计入生产成本吗
  • 清算中的企业能恢复吗
  • 宾馆收入怎么做账
  • 子公司的注册资金需要母公司股东出吗?
  • 应收账款入账价值包括现金折扣吗
  • 抵扣认证的发票需要还回去吗
  • 什么情况下应选用基轴制配合
  • 账面价值大于计税基础是调增还是调减
  • sql server高级编程
  • sql server数据库正在恢复
  • sql server查询数据库大小
  • mysql的基本操作语句
  • mysql 元组
  • linux系统密码设置
  • 创建svn库
  • vc_mbcsmfc.exe是什么
  • ubuntu flash player
  • Linux Mint Cinnamon中安装MATE桌面详细步骤
  • macos 怎么用
  • linux extern关键字
  • Linux磁盘配额步骤
  • Linux系统怎么安装gz包软件
  • shell for awk
  • 给a标签加css的伪类
  • 网页制作范例
  • 用户dsn添加
  • cd跳转不到目录
  • android studio乱码怎么解决
  • python中二维列表的定义
  • 高通芯片基于arm吗
  • 技术开发类工作有哪些
  • python字典常用操作
  • js按下回车键时提交
  • python数学题
  • 广东国税局官网网站
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设