コード例 #1
0
ファイル: Snek.cs プロジェクト: JCODEPENG/JP-s-Snake-Game
        public void SetGridPosition(singleGridPos gridPosition)
        {
            //Assuming which direction the head and body is
            //Add the new body to add
            this.gridPosition  = gridPosition;
            transform.position = new Vector3(gridPosition.GetGridPosition().x, gridPosition.GetGridPosition().y);
            float angle;

            switch (gridPosition.GetDirection())
            {
            default:
            case DIRECTION.up:
                angle = 0;
                break;

            case DIRECTION.down:
                angle = 180;
                break;

            case DIRECTION.left:
                angle = -90;
                break;

            case DIRECTION.right:
                angle = 90;
                break;
            }

            transform.eulerAngles = new Vector3(0, 0, angle);
        }
コード例 #2
0
ファイル: Snek.cs プロジェクト: JCODEPENG/JP-s-Snake-Game
 public singleGridPos(singleGridPos previousSnakeMove, Vector2Int GridPos, DIRECTION direction)
 {
     this.previousSnakeMove = previousSnakeMove;
     this.GridPos           = GridPos;
     this.direction         = direction;
 }
コード例 #3
0
ファイル: Snek.cs プロジェクト: JCODEPENG/JP-s-Snake-Game
    private void Update()
    {
        if (doa == DOA.Alive)
        {
            Inputs();
            gridmoveTimer += Time.deltaTime;
            if (gridmoveTimer >= gridmoveTimerMax)
            {
                //reset timer
                gridmoveTimer = gridmoveTimer - gridmoveTimerMax;

                //update snake position
                singleGridPos previousSnakeMove = null;
                if (snakepositionlist.Count > 0)
                {
                    previousSnakeMove = snakepositionlist[0];
                }
                singleGridPos snakeMovePosition = new singleGridPos(previousSnakeMove, gridPosition, movedirection);
                snakepositionlist.Insert(0, snakeMovePosition);

                Vector2Int gridMoveDirectionVector;
                //move the snake one spot forward from where it was
                switch (movedirection)
                {
                default:
                case DIRECTION.right: gridMoveDirectionVector = new Vector2Int(+1, 0); break;

                case DIRECTION.left: gridMoveDirectionVector = new Vector2Int(-1, 0); break;

                case DIRECTION.up: gridMoveDirectionVector = new Vector2Int(0, +1); break;

                case DIRECTION.down: gridMoveDirectionVector = new Vector2Int(0, -1); break;
                }

                gridPosition = gridPosition + gridMoveDirectionVector;

                gridPosition = levelGrid.validGridPos(gridPosition);
                //grow the snake after eating
                bool snakehaseaten = levelGrid.SnakeMoves(gridPosition);
                if (snakehaseaten)
                {
                    snakebodysize++;
                    CreateSnakeBodyPart();
                }

                if (snakepositionlist.Count >= snakebodysize + 1)
                {
                    snakepositionlist.RemoveAt(snakepositionlist.Count - 1);
                }

                UpdateSnakeBodyParts();

                //Death scenario if snake eats snake
                foreach (SnakeBodyPart snakebodypart in tranformsnakebody)
                {
                    Vector2Int snakebodypartgridpos = snakebodypart.GetGridPosition();
                    if (gridPosition == snakebodypartgridpos)
                    {
                        doa = DOA.Dead;
                        gamehandler.Snakedeath();
                    }
                }

                transform.position    = new Vector3(gridPosition.x, gridPosition.y);
                transform.eulerAngles = new Vector3(0, 0, GetAngleFunction(gridMoveDirectionVector) - 90);
            }
        }
    }