private void OnScreenRaycast() { SpacecraftEntity target; Vector3 targetPoint; Collider targetCollider; if (RaycastTarget(VisibilityRange, out target, out targetPoint, out targetCollider)) { } else { // TODO 技能, 自动瞄准 // SpacecraftEntity currHero = null; // var currDistance = float.MaxValue; // var lockDistance = autoLockDistance * autoLockDistanceMulti; // // var centerPoint = new Vector2(Screen.width / 2, Screen.height / 2); // foreach (var hero in playerEntityList) // { // if (hero == mainHero) continue; // var heroPoint = (Vector2)Camera.main.WorldToScreenPoint(hero.Motion<BaseMotion>().horizonAxis.position); // var heroDistance = Vector2.Distance(heroPoint, centerPoint); // if (heroDistance < lockDistance && heroDistance < currDistance) // { // currDistance = heroDistance; // currHero = hero; // } // } // foreach (var hero in npcEntityList) // { // if (hero == mainHero) continue; // if (hero.npcTemplateVO.MotionType == 0) continue; // if ((KHeroType)hero.subType == KHeroType.htMonsterChest) continue; // var heroPoint = (Vector2)Camera.main.WorldToScreenPoint(hero.Motion<BaseMotion>().horizonAxis.position); // var heroDistance = Vector2.Distance(heroPoint, centerPoint); // if (heroDistance < lockDistance && heroDistance < currDistance) // { // currDistance = heroDistance; // currHero = hero; // } // } // // mainHero.ChangeTarget(currHero); } // TODO 技能, 自动瞄准 //mainHero.Motion<BaseMotion>().CameraRotationSensitivityMulti = mainHero.GetTarget() != null ? mainHero.autoLockDrag : 1.0f; if (m_PickTargetProperty.GetTarget() != target || m_PickTargetProperty.GetTargetCollider() != targetCollider) { m_PickTargetProperty.SetTarget(target, targetCollider); ChangeTargetEvent eventInfo = new ChangeTargetEvent(); eventInfo.newTarget = target; SendEvent(ComponentEventName.ChangeTarget, eventInfo); } }
public void Reset() { Target = null; SnapOnInit = false; FollowSpeed = new Vector2(9.6f, 9.6f); OnChangeTarget = new ChangeTargetEvent(); }
public void Awake() { State = CameraControllerState.Follow; BasePosition = transform.position; PanOffset = Vector2.zero; FollowTarget = true; WaitTimer = 0f; OnChangeTarget = OnChangeTarget ?? new ChangeTargetEvent(); Camera = GetComponent <Camera>(); }
public override void OnTargetChanged(ChangeTargetEvent eventInfo) { // 导弹武器使用特殊的目标选择方式 }
/// <summary> /// 通过屏幕中心打出射线选择的目标改变了 /// </summary> /// <param name="eventInfo"></param> public virtual void OnTargetChanged(ChangeTargetEvent eventInfo) { // 锁定多目标, 同时让他们描红的逻辑, 还需要仔细考虑. 这里暂时先注释. 选择目标把它描红的逻辑让HUD执行 //NotifyHUDTargetSelected(eventInfo.newTarget); }