Ejemplo n.º 1
0
    private void FixedUpdate()
    {
        if (!isGameMenu && !isLostControl)
        {
            if (!isLockRotate)
            {
                horizontalInput = Input.GetAxis(AxisOptions.Horizontal.ToString());
                if (Input.GetMouseButton(1))
                {
                    plane.SetNormalAndPosition(localDown, transform.position);
                    ray = Camera.ScreenPointToRay(Input.mousePosition);

                    if (plane.Raycast(ray, out hitDist))
                    {
                        v3 = ray.GetPoint(hitDist);
                    }
                    else
                    {
                        v3 = transform.position + transform.TransformPoint(forward);
                    }
                    if (FlightMode.Sword == currentFlightMode)
                    {
                        isMouseOver = true;
                        OnMouseOver?.Invoke(v3);
                    }
                    rotationEngine.RotateToTargetWithPlaneLimiter(v3);
                }
                else if (isMouseOver)
                {
                    OnMouseOverEnd?.Invoke();
                    isMouseOver = false;
                }
                else if (Mathf.Abs(horizontalInput) > 0)
                {
                    rotationEngine.Rotate(horizontalInput);
                }
                else
                {
                    rotationEngine.SlowDown();
                }
            }
            if (!isLockMove)
            {
                verticalInput = Input.GetAxis(AxisOptions.Vertical.ToString());
                if (verticalInput > 0)
                {
                    engine.Move(verticalInput);
                }
                else if (verticalInput < 0)
                {
                    engine.Move(verticalInput / 2);
                }
                else
                {
                    engine.SlowDown();
                }
            }
        }
    }
Ejemplo n.º 2
0
    private IEnumerator Start()
    {
        yield return(new WaitForFixedUpdate());

        StartCoroutine(IDestroy());
        while (upTime > 0)
        {
            upTime -= Time.fixedDeltaTime;
            engine.Move(1);
            yield return(new WaitForFixedUpdate());
        }
        while (GetAngleToTarget() > angleToTarget)
        {
            if (rocketRigidbody.velocity.magnitude > magnitudeToStartFly)
            {
                engine.SlowDown();
            }
            rotationEngine.RotateToTarget(target);
            yield return(new WaitForFixedUpdate());
        }
        while (rocketRigidbody.angularVelocity.magnitude > angularMagnitudeToStartFly)
        {
            rotationEngine.SlowDown();
            yield return(new WaitForFixedUpdate());
        }
        while (boostTime > 0)
        {
            boostTime -= Time.fixedDeltaTime;
            engine.Move(1);
            yield return(new WaitForFixedUpdate());
        }
        while (Vector3.Distance(transform.position, target) > distanceToTarget)
        {
            yield return(new WaitForFixedUpdate());
        }
        while (Physics.Raycast(transform.position, (target - transform.position).normalized, Vector3.Distance(target, transform.position), obstacleLayer))
        {
            yield return(new WaitForFixedUpdate());
        }
        propExplosion.BlowUp();
    }
Ejemplo n.º 3
0
    public IEnumerator IStarshipMove(Starship starship)
    {
        Starship_Engine         starship_Engine         = starship.GetComponent <Starship_Engine>();
        Starship_RotationEngine starship_RotationEngine = starship.GetComponent <Starship_RotationEngine>();
        Rigidbody rigidbody = starship.GetComponent <Rigidbody>();

        ToStartPosition(starship);

        OnStartMove?.Invoke();
        starship_Engine.SetLockMove(false);
        while (Vector3.Distance(starship.transform.position, endTr.position) > 1f)
        {
            starship_RotationEngine.RotateToTargetWithPlaneLimiter(endTr.position + endTr.forward);

            starship_Engine.Move(MoveDirectionConsideringAngle(1, Vector3.Angle((endTr.position - rigidbody.velocity - starship.transform.position).normalized, starship.RotationPoint.forward))); // Двигаемся

            yield return(new WaitForFixedUpdate());
        }
        starship_Engine.SetLockMove(true);
        OnEndMove?.Invoke();
    }
Ejemplo n.º 4
0
 private void Move(Vector3 moveDirection) => Engine.Move(moveDirection);
Ejemplo n.º 5
0
    // Просто методы
    #region Methods

    private void Move(float direction) => Engine.Move(direction);                                 // Движение