public virtual void StartSkillCasting() { startAiming = false; if (targetPosition == null) { targetPosition = transform.position; } Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; if (Physics.Raycast(ray, out hit, Mathf.Infinity)) { targetPosition = hit.point; targetPosition = new Vector3(targetPosition.x, owner.transform.position.y, targetPosition.z); } transform.position = targetPosition; if (spawnType == SpawnSkillType.FromCaster) { Debug.Log("FROM CASTER!"); transform.position = new Vector3(owner.transform.position.x, owner.transform.position.y, owner.transform.position.z); activate = true; } else { activate = true; } owner.ReceiveOrder(UnitOrder.GenerateIdleOrder(), true); owner.MakeUnitLookAt(targetPosition); transform.rotation = owner.transform.rotation; }
public void ActivateSkill(UnitBaseBehaviourComponent skillOwner) { if (skillType == SkillType.Buff) { Vector3 postAdjustment = positionAdjustment + skillOwner.transform.position; GameObject tmp = GameObject.Instantiate(prefab, postAdjustment, Quaternion.Euler(rotationAdjustment.x, rotationAdjustment.y, rotationAdjustment.z), skillOwner.transform); BaseSkillBehaviour skillTmp = tmp.GetComponent <BaseSkillBehaviour>(); skillTmp.InitializeSkill(skillOwner, SkillType.Buff, targetType, spawnType, behaviourType); } else if (skillType == SkillType.Projectile) { Vector3 postAdjustment = positionAdjustment + skillOwner.transform.position; if (StartAtFront) { postAdjustment = skillOwner.transform.forward + skillOwner.transform.position; rotationAdjustment = new Vector3(skillOwner.transform.rotation.x, skillOwner.transform.rotation.y, skillOwner.transform.rotation.z); } if (skillOwner.targetUnit != null) { skillOwner.MakeUnitLookAt(skillOwner.targetUnit.transform.position); } GameObject tmp = GameObject.Instantiate(prefab, postAdjustment, Quaternion.Euler(rotationAdjustment.x, rotationAdjustment.y, rotationAdjustment.z), null); BaseSkillBehaviour skillTmp = tmp.GetComponent <BaseSkillBehaviour>(); skillTmp.InitializeSkill(skillOwner, SkillType.Projectile, targetType, spawnType, behaviourType); } else if (skillType == SkillType.TargetProjectile) { GameObject tmp = GameObject.Instantiate(prefab, skillOwner.transform.position, Quaternion.Euler(rotationAdjustment.x, rotationAdjustment.y, rotationAdjustment.z), null); BaseSkillBehaviour skillTmp = tmp.GetComponent <BaseSkillBehaviour>(); skillTmp.InitializeSkill(skillOwner, SkillType.TargetProjectile, targetType, spawnType, behaviourType); skillTmp.startAiming = true; // Targetable Projectile should not be here, place it to your unit //PlayerUnitController.GetInstance.targetableProjectile = skillTmp; if (PlayerUnitController.GetInstance.manualControlledUnit != null) { PlayerUnitController.GetInstance.manualControlledUnit.mySkills.SetSkillsToHand(skillTmp); } CursorManager.GetInstance.CursorChangeTemporary(CursorType.CLICKABLE_SKILLHOLD); } }