コード例 #1
0
    public void Move(bool isBreaking, Vector2 inputMove, float dt)
    {
        _body.Refresh(dt);

        _speed = _rb.velocity.magnitude;

        if (disableInputs)
        {
            _disableInputsTime -= dt;
        }

        if (disableInputs)
        {
            _angular = 0f;
            _speed   = 0f;
        }
        else
        {
            if (isBreaking)
            {
                HandleBreak(dt);
                _angular = 0f;
            }
            else
            {
                _targetMove = WorldConversion.ToVector3(inputMove);

                HandleSpeed(dt);
                HandleRotation(dt);
            }
        }

        UpdateRotation(dt);
        UpdateMovement(dt);
    }
コード例 #2
0
ファイル: Bullet.cs プロジェクト: exidhor/Atlantis
    float ComputeDuration(float speed)
    {
        float distance = Vector2.Distance(WorldConversion.ToVector2(transform.position),
                                          WorldConversion.ToVector2(_target.position));

        return(distance / speed);
    }
コード例 #3
0
ファイル: CrewWithRange.cs プロジェクト: exidhor/Atlantis
    bool IsZoneInRange()
    {
        float maxDist = _zone.radius + (_collider.radius * extendCoef);
        float dist    = Vector2.Distance(WorldConversion.ToVector2(transform.position),
                                         WorldConversion.ToVector2(_zone.transform.position));

        return(maxDist > dist);
    }
コード例 #4
0
ファイル: DistanceDecision.cs プロジェクト: exidhor/Atlantis
        public override bool Decide(Steering steering)
        {
            Vector2 playerPos2D    = WorldConversion.ToVector2(PlayerShip.instance.transform.position);
            Vector2 characterPos2D = WorldConversion.ToVector2(steering.controllerTransform.position);

            float distance = Vector2.Distance(playerPos2D, characterPos2D);

            return(_maxDistance < distance);
        }
コード例 #5
0
    protected override void OnStartAction()
    {
        Vector3 shootPoint = WorldConversion.ToVector3(ShootLine());

        Vector3 target = zone.transform.position;

        _floatPosition = new Vector3(shootPoint.x, 0f, shootPoint.z);
        _fishingLine.Land(_floatPosition);
    }
コード例 #6
0
    Vector3 ComputeControlPoint(EvaluationCurve xyCurve,
                                EvaluationCurve yCurve,
                                float time,
                                Vector3 from,
                                Vector3 to)
    {
        Vector2 from2D = WorldConversion.ToVector2(from);
        Vector2 to2D   = WorldConversion.ToVector2(to);

        float   distance01 = xyCurve.Evaluate(time);
        Vector2 pos2D      = (to2D - from2D) * distance01 + from2D;

        float y01 = yCurve.Evaluate(time);
        float y   = (to.y - from.y) * y01 + from.y;

        return(new Vector3(pos2D.x, y, pos2D.y));
    }
コード例 #7
0
    void UpdateMovement(float dt)
    {
        _direction  = transform.forward * _speed;
        _direction += WorldConversion.ToVector3(_body.velocity);

        if (_direction.magnitude > _maxSpeed)
        {
            _direction.Normalize();
            _direction *= _maxSpeed;
        }

        Vector3 move = _direction * dt;

        Vector2 move2D = WorldConversion.ToVector2(move);
        float   angle  = -_angular * dt * _slideStrength * (_speed / _maxSpeed);

        move2D = MathHelper.RotateVector(move2D, angle * Mathf.Deg2Rad);
        move   = WorldConversion.ToVector3(move2D);

        _rb.velocity = move / dt;
    }