コード例 #1
0
ファイル: MoveObject.cs プロジェクト: oursuccess/Dungeon
 protected virtual void OnCollisionEnter2D(Collision2D collision)
 {
     overlapCollisions++;
     if (IsBelowThanMe(collision.gameObject))
     {
         IHaveTrampleEffect trampleObj = collision.gameObject.GetComponent <IHaveTrampleEffect>();
         if (trampleObj != null)
         {
             trampleObj.OnBeenTrampled(this);
         }
     }
 }
コード例 #2
0
ファイル: Player.cs プロジェクト: oursuccess/Dungeon
    protected override IEnumerator MovingImpl()
    {
        Collider2D target = null;

        while (canMove)
        {
            if (lastMoveTime <= moveTime)
            {
                lastMoveTime += Time.deltaTime;
            }
            else
            {
                lastMoveTime = 0f;
                switch (moveState.currState)
                {
                case MoveState.Idle:
                {
                    target = FindAnythingOnDirection(Vector2.down, 0.3f);
                    if (target == null)
                    {
                        ChangeState(MoveState.Fall);
                    }
                    else
                    {
                        target = FindAnythingOnDirection(moveDir, moveDistance);
                        if (target == null || target.isTrigger == true)
                        {
                            ChangeState(MoveState.Move);
                        }
                    }
                }
                break;

                case MoveState.Move:
                case MoveState.Run:
                {
                    target = FindAnythingOnDirection(Vector2.down, 0.3f);
                    if (target == null)
                    {
                        ChangeState(MoveState.Fall);
                    }
                    else
                    {
                        target = FindAnythingOnDirection(moveDir, moveDistance);
                        if (target == null || target.isTrigger == true)
                        {
                            Move();
                        }
                        else
                        {
                            target = FindAnythingOnDirection(moveDir, sightDistance);
                            if (target != null)
                            {
                                IHandlePlayerSought playerSought = target.gameObject.GetComponent <IHandlePlayerSought>();
                                if (playerSought != null)
                                {
                                    playerSought.OnPlayerSought(this);
                                }
                            }
                        }
                    }
                }
                break;

                case MoveState.Jump:
                {
                    target = FindAnythingOnDirection(Vector2.down, 0.3f);
                    if (target == null)
                    {
                        ChangeState(MoveState.Fall);
                    }
                }
                break;

                case MoveState.Fall:
                {
                    target = FindAnythingOnDirection(Vector2.down, rigidBody2D.gravityScale * moveTime);
                    if (target != null)
                    {
                        IHaveTrampleEffect ihte = target.gameObject.GetComponent <IHaveTrampleEffect>();
                        if (ihte != null)
                        {
                            ihte.OnBeenTrampled(this);
                        }
                        else
                        {
                            if (IsGround(target))
                            {
                                ChangeState(MoveState.Idle);
                            }
                        }
                    }
                    else
                    {
                        fallDistance += rigidBody2D.gravityScale * moveTime;
                    }
                    //wait for hit collider
                }
                break;

                case MoveState.Crawl:
                {
                }
                break;

                case MoveState.FindThing:
                {
                    Move();
                    target = FindAnythingOnDirection(moveDir, sightDistance);
                    IHandlePlayerSought playerSought = target.gameObject.GetComponent <IHandlePlayerSought>();
                    if (playerSought == null)
                    {
                        ChangeState(MoveState.Idle);
                    }
                }
                break;

                case MoveState.Attack:
                {
                    ChangeState(MoveState.Idle);
                }
                break;

                default:
                    break;
                }
            }
            yield return(null);
        }
        yield return(null);
    }