第二十七节 检测旋转碰撞

作者: 安静的程序员 | 来源:发表于2019-06-25 09:12 被阅读0次

检测能否旋转,就是判断方块旋转之后会不会与已经固定的点重合,或者,旋转之后,是否有点跑到屏幕外了。在上一节的旋转方块中,已经记录了旋转之后的点,所以旋转碰撞的代码直接添加到旋转方块的方法中即可,下面是修改后的旋转方块方法:

// 旋转方块
void RotateBlock()
{
    // 记录旋转后的方块数据
    List<MyPoint> rotatedBlockData = new List<MyPoint>();
    // 记录世界坐标下的方块数据
    List<MyPoint> rotatedBlockDataInWorld = new List<MyPoint>();

    // 获取方块宽
    int blockWidth = _blockLayer.Size._width;
    // 开始旋转
    foreach (var item in _blockLayer.ViewData)
    {
        MyPoint rotated = new MyPoint();
        rotated._list = item._line;
        rotated._line = blockWidth - item._list - 1;
        // 存入旋转后的方块数据
        rotatedBlockData.Add(rotated);
    }

    // 转换坐标
    ConvertPointInWorld(rotatedBlockData, rotatedBlock-DataInWorld);

    // 判断碰撞
    foreach (var point in rotatedBlockDataInWorld)
    {
        // 只要发现有点跑到屏幕外 或者 与固定方块层的点重合了
        if (point._list > 9 || _defaultLayer.IsCanSee(point))
            return;
    }

    // 替换成旋转后的方块数据
    _blockLayer.ViewData = rotatedBlockData;

    _screenMain.RefreshScreen();
}

好了,那么方向键到这里就告一段落了,下面,我们要让游戏继续下去,不能总是只有一个方块。

代码链接:https://pan.baidu.com/s/1YWflEaT5oJ-0Hb0a6obVVA
提取码:1jqr

相关文章

  • 第二十七节 检测旋转碰撞

    检测能否旋转,就是判断方块旋转之后会不会与已经固定的点重合,或者,旋转之后,是否有点跑到屏幕外了。在上一节的旋转方...

  • 检测碰撞

  • 2D碰撞法线转角度

    Physics2D.CircleCast(地面检测碰撞盒.transform.position, 地面检测碰撞盒....

  • 飞机大战-碰撞检测

    目标 了解碰撞检测方法 碰撞实现 01. 了解碰撞检测方法 pygame 提供了 两个非常方便 的方法可以实现碰撞...

  • Unity手册—碰撞检测相关汇总

    本文汇总了用于碰撞检测的方法和设置原地址:Unity手册—碰撞检测相关汇总 碰撞组件 刚体 两物体若要发生碰撞事件...

  • 碰撞器检测和触发器检测

    无论是碰撞检测还是触发检测,他们都基于Collider组件。两个游戏对象发生碰撞时,碰撞器可以产生系统默认的碰撞产...

  • 碰撞系统脚本控制

    Cocos Creator 中内置了一个简单易用的碰撞检测系统,他会根据添加的碰撞组件进行碰撞检测。当一个碰撞组件...

  • 碰撞算法

    碰撞检测算法:点和矩形碰撞、点和圆形碰撞、矩形碰撞、圆形碰撞 点和矩形碰撞 /** * * @para...

  • ARKit碰撞检测

    用ARKit做碰撞检测,其实也就是做3D碰撞检测。3D碰撞检测需要涉及到比较复杂的数学知识,还好SceneKit给...

  • unity 3d之路 —— 游戏组件与API

    今天主要学习了组件的使用,看了几节关于控制游戏物体旋转,游戏物体碰撞检测的视频,并熟悉了其中几个API 1. Ri...

网友评论

    本文标题:第二十七节 检测旋转碰撞

    本文链接:https://www.haomeiwen.com/subject/efvzqctx.html