Пример #1
0
 // Whether there is a union between these two MovementColliders
 public bool HasUnion(MovementCollider a)
 {
     return(enabled &&
            (a.minX < maxX && a.maxX > minX) &&
            (a.minY < maxY && a.maxY > minY) &&
            (a.minZ < maxZ && a.maxZ > minZ));
 }
Пример #2
0
    void CreateMovementZone()
    {
        MovementOrigin = visual.transform.position;

        MovementCollider = GameObject.CreatePrimitive(PrimitiveType.Cylinder);
        MovementCollider.transform.position   = new Vector3(visual.transform.position.x, 0.05f, visual.transform.position.z);
        MovementCollider.transform.localScale = new Vector3(MovementRadius * 2, 0.1f, MovementRadius * 2);

        Collider[] colliders = MovementCollider.GetComponents <Collider>();
        for (int i = 0; i < colliders.Length; i++)
        {
            Destroy(colliders[i]);
        }

        var renderer = MovementCollider.GetComponent <Renderer>();
        var material = (Material)Resources.Load("WalkZone", typeof(Material));

        if (renderer != null && material != null)
        {
            renderer.material = material;
        }
    }
Пример #3
0
        /// <summary>
        /// Start is called on the frame when a script is enabled just before
        /// any of the Update methods is called the first time.
        /// </summary>
        void Start()
        {
            PhysicsState     = this.SafeGetComponent <PhysicsState>();
            MovementCollider = this.SafeGetComponent <CharacterController>();
            HitState         = GetComponent <HitState>();
            JumpCount        = MaxJumpCount;
            OnChangeDirection(_direction);
            _ledgeTarget = this.CachedGetComponent(_ledgeTarget, () => transform);
            if (Character == null)
            {
                return;
            }
            var stateController = Character.StateController;
            var states          = Character.States;

            stateController.OnStateChange += (b, a) => {
                if (states.Jump == a)
                {
                    Jump();
                }
                if (states.LedgeRelease == a)
                {
                    IsFastFalling = false;
                    CurrentLedge  = null;
                }
                if (states.LedgeAttack == b || states.LedgeClimb == b)
                {
                    CurrentLedge           = null;
                    transform.position     = _skeletonRoot.position;
                    _skeletonRoot.position = transform.position;
                    MovementCollider.Move(Vector3.down * MovementCollider.height);
                    Character.StateController.SetState(Character.States.Idle);
                }
                if (states.EscapeForward == b && isServer)
                {
                    _direction = !_direction;
                }
            };
        }
Пример #4
0
 void Start()
 {
     mCollider = GetComponent <MovementCollider>();
     receiver  = GetComponent <InputReceiver>();
 }