12802人加入学习
(86人评价)
幻径 - 超级上瘾的小游戏

制作完成于2019年1月27号,基于Unity2018.1.0

价格 ¥ 200.00

gamePanel  负责显示 text 成绩,

AddListener 添加监听。。

 

gameManage 负责 计数 

发送广播

EventCenter.Broadcast(EventType.UpdateScoreText,gameScore);

 

 

[展开全文]

22.当新功能的游戏逻辑好像可以使用之前的功能体系设置出来的属性的时候,我倾向于新创建一个属性,而不是使用之前的属性。为了减低两个功能之间的耦合性。因为使用共同的属性,可能会出现一个属性影响两个不相干的功能的情况,改起来比较麻烦。

例如这个代码里面的IsJumping,和isMove

 

[展开全文]

(已解决)跳跃一次加三分,是射线位置和平台collider大小的问题。

这一部分的游戏逻辑就是利用玩家的射线检测,检测平台的collider。

在游戏运行过程中,我观察collider的边框和射线的交点,和我们期待的”只有脚下的射线和平台交接“不太一样。

可以改变rayDown/Left/Right的位置,也可以改变collider的大小。我选择改变collider的大小。

[展开全文]

(已解决)代码正确,但是角色一跳就是判定游戏失败。

把平台的collider的长度调大,比0.554f大就好了。因为玩家左右跳动的距离是0.554f。

(不过细想,之前也没有出现玩家跳不上平台的事情啊)

[展开全文]

避坑!在awake中:vars赋值语句应该在Init()前面

private void Awake()
    {
        Instance = this;
        vars = ManagerVars.GetManagerVars();  //我谢谢你,这个vars赋值语句应该在Init()前面!
        Init();
    }

[展开全文]

避坑!在awake中:vars赋值语句应该在Init()前面

private void Awake()
    {
        Instance = this;
        vars = ManagerVars.GetManagerVars();  //我谢谢你,这个vars赋值语句应该在Init()前面!
        Init();
    }

[展开全文]

解决了一个梯子断裂的问题,期间更改了position到local Position还是有问题,对照错误和正常坐标,决定从x坐标思考,并找到了问题所在。是我拖拽预制体时发了错误。

问题原图如下:

对比了正常坐标和错误坐标。

计算了一下数值。发现是“平台生成脚本中,确定X轴坐标”的代码,和“管理平台脚本中,更改障碍物方向,对X轴取负的代码”共同作用。

确定代码无误后,我发现错的并不单单是障碍物的位置,而是一个完整平台的位置,于是我结合自己之前的经历,怀疑是不是我拖拽预制体的时候发生错误了。

发现真的是。

PS:使用的仍然是老师讲的LocalPosition。

表白Carson老师~

[展开全文]

找到了平台不变的原因。我的问题在初级平台这里。我把PlatformSprite里面的sprite赋值搞错了。

 

错误笔记:1.自己定义一个ran,但是没有其他地方使用。导致生成的平台每次各个方向只有一个。

[展开全文]

1  根据不同的主题   ,生成 对应的 平台 ,平台障碍物。

父物体   Platfrom 平台    障碍物 Obstacle

中心点还是正常的Platfrom 平台====

随机在左边 或者右边生成  障碍物-------------

[展开全文]

发生 碰撞 两个物体 都要有 collider组件

有一方必须有一个  Rigidbody 

有一方必须勾选 isTreeger 属性

人物添加两个collider

 

 

关于  玩家平台  碰撞检测

玩家  平台都有  collider组件

玩家有  Rigidbody  重力作用,实现跳跃

玩家collider 组件  

 

[展开全文]

区分左边跳跃  右边跳跃

1 PlayerController  脚本

鼠标点击方法

点击左边  x坐标小于 屏幕宽度的一半

[展开全文]

重力感应 添加 

Rigidbody 2D

[展开全文]

1Btns创建 空物体存放  3个按钮

添加 Horizontal Layout Group 水平布局组件

选项 Midle  Center 居中排序

padding 边距

[展开全文]

Canvas

Screen Space-Overlay 

始终在我们屏幕前面

 

Screen Space-Camera

始终在我们相机前面

 

UI  Scale Mode ui缩放自适应

Scale with Screens Size

粒子系统

1尺寸 start  size 

在两个常量里面随机

2 发射方向 shape 

3修改材质

4 Color 颜色随着速度而变化

改变最后箭头 设置为0,将start speed 设置为0.

 

 

 

[展开全文]

先导入材质包,选一个最简单的台阶,

台阶的Sorting Layer添加一个Platfrom,将Platfrom调至Defult和GUI之间

每一个方块之间Position的值向右相差x = +0.554,y = +0.645。向左相差x = -0.554,y = +0.645

在一个原先的脚本ManagerVars,在后面添加一段代码

public float nextXPos = 0.554f, nextYPos = 0.645f;

在unity创建一个空对象并改名为PlatformSpawner,挂一个脚本PlatformSpawner,并添加一段代码

public Vector3 startSpawnPos;(将void start和void update删除)。

在unity里将空对象里的 start Spawn Pos里的Y值0改为-2.4,、

在unity里新建一个名为Prefabs的文件夹,

[展开全文]

try
        {
            BinaryFormatter bf = new BinaryFormatter();//二进制格式
            using(FileStream fs = File.Create(Application.persistentDataPath + "/GameData.data"))
            {
                data.SetBestScoreArr(bestScoreArr);
                data.SetDiamondCount(diamondCount);
                data.SetIsFirstGame(isFirstGame);
                data.SetIsMusicOn(isMusicOn);
                data.SetSelectSkin(selectSkin);
                data.SetSkinUnlocked(skinUnlocked);
                bf.Serialize(fs, data);//在fs文件夹里面序列化data的内容(将字符变成数字)//利用二进制格式化将data序列化至文件流fs中
            }
        }

[展开全文]

(已解决)更改射线长度检测到障碍物

//左右射线检测
        RaycastHit2D leftHit = Physics2D.Raycast(rayLeft.position, Vector2.left, 0.2f, obstacleLayer);
        RaycastHit2D rightHit = Physics2D.Raycast(rayRight.position, Vector2.right, 0.2f, obstacleLayer);

[展开全文]

显示canvas,运行游戏,平台和人物仍会自己生成

我找到了解决办法:

1.找到装有MainPanel和GamePanel的Canvas,看上面的Canvas组件

2.把他的Sorting Layer从Default改成GUI

完毕

 

想不到啊,第二次做这个项目,我还是在这里出问题上。提供一下我的思路:

激活画布,运行游戏,角色和平台仍然会显示出来。

问题可能存在于:1.层级

2.代码

3.面板参数

[展开全文]

授课教师

SiKi学院老师

课程特色

下载资料(2)
视频(64)