Mechanical Explorer
游戏简介
这是一款机甲风格的冒险类跑酷游戏。玩家通过控制机甲主人公,躲避攻击守卫,寻找收集钥匙碎片,最后逃离变种人基地。在游戏过程中,随着不同的地图的变化,玩家所控制的机甲会进入拥有不同功能的实验室,如:反重力实验室,生产实验室等,机甲也因此会拥有不同的功能属性或装备。同时,我们也需要玩家发挥自己的脑洞,思考各种属性和装备的用法,并进行对应操作,使他们成为帮助玩家破关的助力。
基本玩法
- 玩家通过空格实现跳跃,通过跳跃躲避场景中的障碍物
- 通过F键进行攻击,使用远程攻击击退敌人
场景展示
本游戏主打机甲风格,大量运用机甲元素融入场景搭建,将场景背景设置为高科技实验室,人物与环境色彩以金属暗色系为主,带给人一种科幻未来感。
my part
1、人物原型设计
本项目为游戏关卡设计课程的课程项目,根据老师给出的“机器人”主题,于是设计了一个机甲造型的主人公形象
2、人物动画设计
设计了人物的跑动、跳跃、攻击动画,并在unity中创建了人物的动画片段
3、人物控制与受伤反馈
在unity中编写脚本控制人物的实现跳跃和二段跳,话不多说,看看主要代码吧
public void Jump()
{
//animator.Play("robot_jump");
if (Input.GetKeyDown(KeyCode.Space))
{
if (rb.velocity.y == 0)
{
rb.AddForce(Vector2.up * force);
}
else if (rb.velocity.y != 0 && !doubleJump)
DoubleJump();
}
}
private void DoubleJump()
{
rb.AddForce(Vector2.up * (force / 1f));
//rb.AddForce(Vector2.up * force);
doubleJump = true;
}
在人物触碰到怪物受伤时,需要给予玩家反馈,于是便设计了人物受伤时的闪烁效果。
public void OnTriggerEnter2D(Collider2D box)
{
if (box.CompareTag("Enemy"))//在人物的碰撞体与怪兽的碰撞体接触之后,给玩家受伤反馈
{
Damage();
}
}
public void Damage()
{
// animator.Play("Damage");
//Instantiate(hurtSound, transform.position, Quaternion.identity);
BlinkPlayer(blinks, blinkTime);
}
4、障碍物的随机生成与地图移动
我们的游戏是一个横版的跑酷游戏,在人物前进的过程中地图也随之移动,并且会随机掉落障碍物。但其实我们固定了摄像机!!!让人物在原地跑动,反而让地图进行移动,这就是“卧看满天云不动,不知云与我俱东”啦,于是我们并不需要制作很大的地图,只需要制作一小部分地图,让这部分地图循环运动就可以啦。同时我们的障碍物和敌人也是随机掉落的哦,不需要人为地去设置。
void OnTriggerEnter2D(Collider2D hitInfo)
{
if (hitInfo.gameObject.CompareTag("Enemy"))
{
hitInfo.GetComponent<Enemy>().TakeDamage(damage);
Destroy(gameObject);
Instantiate(impactEffect, transform.position, Quaternion.identity);
}
if (hitInfo.gameObject.CompareTag("Obstacule"))
{
Destroy(gameObject);
Instantiate(impactEffect, transform.position, Quaternion.identity);
}
}
项目地址
demo演示