当前位置: 首页 > news >正文

网站开发运营推广叫什么软件手机网速慢怎么办

网站开发运营推广叫什么软件,手机网速慢怎么办,高端做网站公司哪家好,石家庄网站空间精确获取碰撞点 核心是获取武器碰撞盒最顶点#xff0c;然后获取敌人碰撞盒距离该点最近的点 /// summary/// 获取获取武器前端位置 碰撞盒最左或最右顶点/// /summary/// param namecollider/param/// param name…精确获取碰撞点 核心是获取武器碰撞盒最顶点然后获取敌人碰撞盒距离该点最近的点 /// summary/// 获取获取武器前端位置 碰撞盒最左或最右顶点/// /summary/// param namecollider/param/// param namefacingRight/param/// returns/returnspublic static Vector3 GetCollider2DEdgePoint(Transform deployer, bool facingRight){var collider deployer.GetChild(0).GetComponentInChildrenCapsuleCollider2D();// 获取碰撞器的包围盒Bounds bounds collider.bounds;// 计算面向的方向向量右或左Vector2 attackDirection facingRight ? Vector2.right : Vector2.left;// 根据面向方向和碰撞器的边界来获取边缘点Vector3 edgePoint bounds.center (Vector3)(attackDirection * bounds.extents.x);// 如果需要在局部空间中获取边缘点需要将世界坐标转换为局部坐标// edgePoint deployer.InverseTransformPoint(edgePoint);return edgePoint;}//使用public void CreateHit(Collider2D other, CharacterStats target, bool isCrit false)Vector3 edgePoint Tool.GetCollider2DEdgePoint(transform, Entity.facingRight);var hitPosition other.ClosestPoint(edgePoint);1. 给攻击帧添加碰撞盒 优点配置直观无需事件触发 缺点无法定制效率低 检测放在子物体可以控制旋转 添加触发器事件 注意OnTriggerEnter2D只会在挂载了collider的组件上触发 protected virtual void OnTriggerEnter2D(Collider2D other){Debug.Log(this.name 命中 other);entity.AttackTrigger(other);} 在角色脚本执行攻击检测 public override void AttackTrigger(Collider2D other){if (other.gameObject.layer LayerMask.NameToLayer(Enemy)){base.AttackTrigger(other);AttackColliderCheckEnemy(other, (enemy) enemy.BeDamage(stats));}}2. 为每个攻击动画状态使用射线检测 优点效率高于碰撞盒可以定制比如增加攻击范围 缺点配置麻烦不直观 部分代码仅供参考 定义每个动画的检测范围 [Header(攻击状态对应的碰撞盒)]public DictionaryEntity.States, AttackRanges attackRangeDict new();//索引是攻击的状态 连击数获取对应攻击的范围 [System.Serializable] public class AttackRanges {/// summary/// 对应的连击次数 作为索引/// /summarypublic AttackRange[] ranges new AttackRange[1];//索引器public AttackRange this[int index]{get{// return ranges.FirstOrDefault(x x.combo index);//如果没有默认用第一个if (index ranges.Length)return ranges[0];return ranges[index];}} }[System.Serializable] public class AttackRange {public SerializableVector2 offset new();public SerializableVector2 size new();public float rotation 0;public UnityEngine.Vector2 Offset offset.ToVector2();public UnityEngine.Vector2 Size size.ToVector2(); }添加帧事件 private void AttackTrigger(){entity.AttackTrigger();}执行检测与绘制范围 /// summary/// 攻击检测/// /summary/// typeparam nameT/typeparam/// param nameaction/paramprotected void AttackColliderCheckT(ActionT action) where T : Entity{AttackRange attackRange stats.attackRangeDict[States.PrimaryAttack][ComboCounter];var offset facingRight ? attackRange.offset.ToVector2() : new Vector2(-attackRange.offset.x, attackRange.offset.y);var rotation facingRight ? attackRange.rotation : -attackRange.rotation;Collider2D[] colliders Physics2D.OverlapBoxAll(offset, attackRange.size.ToVector2(), rotation);foreach (Collider2D hit in colliders){if (hit.TryGetComponentT(out T entity)){action?.Invoke(entity);}}}// 默认情况下就会在编辑模式下运行protected virtual void OnDrawGizmos(){// Vector3 boxCenter groundCheck.position Vector3.down * groundCheckDistance / 2;// Gizmos.DrawCube(boxCenter, new Vector3(groundCheckWidth, groundCheckDistance, 0));Gizmos.DrawLine(groundCheck.position, new Vector3(groundCheck.position.x, groundCheck.position.y - groundCheckDistance));//绘制一条从 from(前面的) 开始到 to后面的 的线。Gizmos.DrawLine(wallCheck.position, new Vector3(wallCheck.position.x wallCheckDistance, wallCheck.position.y));//绘制一条从 from(前面的) 开始到 to后面的 的线。if (stats null) return;Gizmos.color Color.red;var attackRange stats.attackRangeDict.ContainsKey(States.PrimaryAttack) ? stats.attackRangeDict?[States.PrimaryAttack]?[ComboCounter] : new AttackRange();Vector3 center (Vector3)attackRange.Offset;// 设置 Gizmos 的变换矩阵Matrix4x4 oldMatrix Gizmos.matrix;Gizmos.matrix Matrix4x4.TRS(center, Quaternion.Euler(0, 0, attackRange.rotation), Vector3.one);Gizmos.DrawWireCube(transform.position (Vector3)attackRange.Offset, (Vector3)attackRange.Size);// 恢复原来的矩阵Gizmos.matrix oldMatrix;}3. 所有动画共用一个射线检测 优点简单 缺点不精确 在帧事件触发调用检测方法即可 /// summary/// 攻击检测/// /summary/// typeparam nameT/typeparam/// param nameaction/paramprotected void AttackColliderCheckT(ActionT action) where T : Entity{Collider2D[] colliders Physics2D.OverlapCircleAll(attackCheck.position, attckCheckRadius);foreach (Collider2D hit in colliders){if (hit.TryGetComponentT(out T entity)){action?.Invoke(entity);}}}
http://www.hkea.cn/news/14534436/

相关文章:

  • 网站打开慢什么原因集团网页建设
  • 微信如何做网站太仓智能网站开发
  • 山东省建设厅招标网站首页深圳宝安区做网站的公司
  • 龙岩市建设部网站网站创建人是
  • 物流网站建设目标横翻网站模版
  • 衡水稳定的网络建站wordpress编辑器媒体库
  • 那个网站卖数据库最好的网站开发语言
  • 济南房地产网站建设建设部网站查造价师
  • 网站广告图片在线制作大数据抓取客户软件
  • 移动网站 图片优化wordpress标签使用方法
  • 应聘工作哪个网站比较好网站开发筛子游戏
  • 网站优化关键词价格wordpress 添加自定义栏目面板
  • 建设网站一般需要多少钱浙江恒元建设网站
  • 建设银行个人网站官网双鸭山网络推广
  • 成都市建设工程交易中心网站wordpress登陆后跳转到首页
  • 上海网站建设觉策电脑网站视频怎么下载
  • 中英企业网站模板移动建站是什么意思
  • 甘肃省建设局官方网站做响应式网站
  • 深圳企业网站定做做网站会出现什么问题
  • 自己做视频网站资源从哪里来cms建站流程
  • 宁波网站建设公司在哪里网络系统安全原则
  • 建 网站 是软件开发优秀软文营销案例
  • 如何制作收费网站网站广告推广价格
  • 济南网站建设v芯企优互联不错做同城网站有哪些
  • 天津泰达建设集团有限公司网站公司网站 cms
  • 做网站开视频网站衡阳网站网站建设
  • 上海网络推广公司网站建网站要备案
  • 茶网站源码游戏开发学什么专业
  • 鞍山商城网站建设公司介绍网站源码
  • 上海平台网站建设报价代理注册公司怎么收费