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); }
float ComputeDuration(float speed) { float distance = Vector2.Distance(WorldConversion.ToVector2(transform.position), WorldConversion.ToVector2(_target.position)); return(distance / speed); }
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); }
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); }
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); }
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)); }
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; }