コード例 #1
0
        private void HandleGravitySpeed(PlayerMoveCom moveCom, PropertyCom propertyCom)
        {
            float massValue = 0;

            switch (moveCom.CurrMoveType)
            {
            case Behavior.MoveType.None:
            case Behavior.MoveType.Run:
            case Behavior.MoveType.Jump:
                massValue = 1;
                break;

            case Behavior.MoveType.Climb:
            case Behavior.MoveType.ClimbJump:
            case Behavior.MoveType.GrabWall:
                massValue = 0.6f;
                break;

            default:
                break;
            }
            Vector2 gVector = new Vector2(0, GravitySystem._G);

            if (moveCom.Rig.velocity.y < 0)
            {
                moveCom.Rig.velocity += gVector * 1.5f * massValue * Time.deltaTime;
            }
            else if (moveCom.Rig.velocity.y > 0)
            {
                moveCom.Rig.velocity += gVector * 1 * massValue * Time.deltaTime;
            }
        }
コード例 #2
0
        protected override void HandleComs(List <BaseCom> comList)
        {
            PropertyCom   propertyCom = GetCom <PropertyCom>(comList[0]);
            PlayerMoveCom moveCom     = GetCom <PlayerMoveCom>(comList[1]);

            if (moveCom.ReqMove != Vector3.zero)
            {
                moveCom.Rig.MovePosition(moveCom.Rig.position + moveCom.ReqMove.ToVector2());
                moveCom.ReqMove = Vector3.zero;
            }

            if (moveCom.HasNoReqMove)
            {
                return;
            }

            //移动
            moveCom.Rig.velocity = new Vector2(moveCom.ReqMoveSpeed, moveCom.Rig.velocity.y);
            if (moveCom.ReqJumpSpeed != 0)
            {
                moveCom.Rig.velocity = new Vector2(moveCom.Rig.velocity.x, moveCom.ReqJumpSpeed);
            }

            HandleGravitySpeed(moveCom, propertyCom);
            HandleMoveAnim(comList);
        }
コード例 #3
0
        protected override void HandleComs(List <BaseCom> comList)
        {
            WanderCom     wanderCom     = GetCom <WanderCom>(comList[0]);
            TransformCom  transCom      = GetCom <TransformCom>(comList[1]);
            Collider2DCom collider2DCom = GetCom <Collider2DCom>(comList[2]);
            PropertyCom   propertyCom   = GetCom <PropertyCom>(comList[3]);

            wanderCom.WanderDir = CalcWanderMoveDir(transCom, wanderCom, collider2DCom);

            //更新方向
            transCom.ReqDir = wanderCom.WanderDir;

            //位移
            Vector3 delta = new Vector3(wanderCom.WanderDir == DirType.Right ? 1 : -1, 0, 0);

            delta            = delta * propertyCom.MoveSpeed.Curr * Time.deltaTime;
            transCom.ReqMove = delta;
        }
コード例 #4
0
        protected override void HandleComs(List <BaseCom> comList)
        {
            GazeSurroundCom gazeSurroundCom = GetCom <GazeSurroundCom>(comList[0]);
            TransformCom    transCom        = GetCom <TransformCom>(comList[1]);
            PropertyCom     propertyCom     = GetCom <PropertyCom>(comList[2]);

            if (gazeSurroundCom.gazeUid <= 0)
            {
                return;
            }
            Entity gazeEntity = ECSLocate.ECS.GetEntity(gazeSurroundCom.gazeUid);

            if (gazeEntity == null)
            {
                return;
            }

            Vector2 selfPos   = transCom.GetPos();
            Vector2 targetPos = gazeEntity.GetCom <TransformCom>().GetPos();

            //方向
            if (selfPos.x - targetPos.x > 0)
            {
                transCom.ReqDir = DirType.Left;
            }
            else
            {
                transCom.ReqDir = DirType.Right;
            }

            //移动
            gazeSurroundCom.moveDir = CalcWanderMoveDir(selfPos, gazeSurroundCom, targetPos);
            Vector3 delta = new Vector3(gazeSurroundCom.moveDir == DirType.Right ? 1 : -1, 0, 0);

            delta            = delta * propertyCom.MoveSpeed.Curr * Time.deltaTime;
            transCom.ReqMove = delta;
        }
コード例 #5
0
        protected override void OnEnter(NodeData wData)
        {
            EntityWorkData workData = wData as EntityWorkData;

            //参数
            Vector2 inputMove = workData.GetParam().GetVect2();

            //组件
            PlayerMoveCom moveCom       = workData.MEntity.GetCom <PlayerMoveCom>();
            TransformCom  transCom      = workData.MEntity.GetCom <TransformCom>();
            Collider2DCom collider2DCom = workData.MEntity.GetCom <Collider2DCom>();
            PropertyCom   propertyCom   = workData.MEntity.GetCom <PropertyCom>();

            //跳跃阶段重置
            ResetJumpStep(moveCom, collider2DCom);

            if (CheckMoveTypeInCD(moveCom))
            {
                moveCom.HasNoReqMove = true;
                return;
            }
            else
            {
                moveCom.HasNoReqMove = false;
            }

            MoveType moveType = CalcMoveType(collider2DCom, moveCom, inputMove);

            switch (moveType)
            {
            case MoveType.None:
                moveCom.ReqMoveSpeed = 0;
                moveCom.ReqJumpSpeed = 0;
                break;

            case MoveType.Run:
                moveCom.ReqMoveSpeed = propertyCom.MoveSpeed.Curr * inputMove.x;
                moveCom.ReqJumpSpeed = 0;
                break;

            case MoveType.Jump:
                moveCom.JumpStep++;
                moveCom.ReqMoveSpeed = 0;
                moveCom.ReqJumpSpeed = propertyCom.JumpSpeed.Curr * inputMove.y;
                break;

            case MoveType.Climb:
                inputMove.x          = inputMove.x < 0 ? -inputMove.x : inputMove.x;
                moveCom.ReqMoveSpeed = 0;
                moveCom.ReqJumpSpeed = propertyCom.ClimbSpeed.Curr * inputMove.x;
                break;

            case MoveType.ClimbJump:
                int moveValue = inputMove.x < 0 ? -1 : 1;
                moveCom.ReqMoveSpeed = propertyCom.MoveSpeed.Curr * moveValue;
                moveCom.ReqJumpSpeed = propertyCom.ClimbSpeed.Curr;
                break;

            case MoveType.GrabWall:
                moveCom.ReqMoveSpeed = 0;
                moveCom.ReqJumpSpeed = 0;
                break;

            default:
                break;
            }

            ClampMoveSpeed(moveCom, collider2DCom);
            HandleMoveTypeCD(moveType, moveCom);
            HandleMoveDir(moveCom, transCom);

            //记录状态
            moveCom.CurrMoveType = moveType;
            if (inputMove.y != 0)
            {
                Debug.LogWarningFormat("BEV_ACT_Move>>>>>{0}--ReqMoveSpeed:{1}--ReqJumpSpeed:{2}", moveType.ToString(), moveCom.ReqMoveSpeed, moveCom.ReqJumpSpeed);
            }
        }