public void ArrowColliderEnterCallback(Collider collider, float attackPower)
 {
     if ((SlasheonUtility.IsLayerNameMatch(collider.gameObject, "Enemy")))
     {
         MissionActor hitActor = collider.gameObject.GetComponent <MissionActor>();
         hitActor.Damage(attackPower);
         _playerController.InstanceArrowDamageEffect(collider);
     }
 }
예제 #2
0
    public void ExitColliderEnterEvent(Collider other, StageExitCollider script)
    {
        if (SlasheonUtility.IsLayerNameMatch(other.gameObject, "Player"))
        {
            switch (script.StageExitType)
            {
            case StageExitType.FieldChange:
                MissionSceneManager.Instance.ChangeStage(script.TargetKey);
                break;

            case StageExitType.ToHome:
                SceneControllManager.Instance.ChangeSceneAsync("HomeScene", true, true, true);
                break;

            case StageExitType.ExitMission:
                SceneControllManager.Instance.ChangeSceneAsync("HomeScene", true, true, true);
                break;

            default: break;
            }
        }
    }
    public void SlashColliderEnterCallback(Collider collider)
    {
        if (_playerController.PlayerState.stamina < _playerController.PlayerState.consumptionStaminaSlashHit)
        {
            _playerController.SlashCollider.RemoveCollider();
            return;
        }

        if ((SlasheonUtility.IsLayerNameMatch(collider.gameObject, "Enemy")))
        {
            MissionActor hitActor = collider.gameObject.GetComponent <MissionActor>();
            //一度の斬撃で複数回ダメージ判定しないように調整
            int hitedCount = slashHitEnemyList.Where(x => x.transform.GetInstanceID() == hitActor.transform.GetInstanceID()).Count();
            if (hitedCount == 0)
            {
                hitActor.Damage(_playerController.ActorState.attack);
                _playerController.InstanceSlashDamageEffect(collider, InputManager.Instance.GetTouchPosition(slashTouchID));
                slashHitEnemyList.Add(hitActor);
                UpdateStamina(_playerController.PlayerState.consumptionStaminaSlashHit);
            }
        }
    }
    private Vector3 TouchActionOnField()
    {
        int touchID = InputManager.Instance.GetAnyTouchBeginID();

        if (touchID != -1)
        {
            if (!InputManager.Instance.IsUITouch(touchID))
            {
                moveTouchID = touchID;
            }
        }
        if (moveTouchID != -1)
        {
            if (!_playerController.PlayerRotation.isRotationMoving)
            {
                if (InputManager.Instance.IsTouchEnd(moveTouchID))
                {
                    Vector3    touchPosition = InputManager.Instance.GetTouchPosition(moveTouchID);
                    Ray        ray           = Camera.main.ScreenPointToRay(touchPosition);
                    RaycastHit hit           = new RaycastHit();
                    //Debug.DrawRay(ray.origin, ray.direction * raycastDistance, Color.red, 0.7f, false);
                    if (Physics.Raycast(ray, out hit, raycastDistance))
                    {
                        //Debug.Log("hit : " + LayerMask.LayerToName(hit.collider.gameObject.layer));
                        if (SlasheonUtility.IsLayerNameMatch(hit.collider.gameObject, "Field"))
                        {
                            _playerController.moveBeginPosition = _playerController.transform.position;
                            _playerController.isMoving          = true;
                            return(hit.point);
                        }
                    }
                    moveTouchID = -1;
                }
            }
        }
        return(Vector3.zero);
    }