欢迎,这里是北风的个人站。正在施工中。

Unity第一人称射箭游戏制作

一、游戏介绍

使用Unity制作一个第一人称射箭游戏。

  • 玩家使用WASD移动
  • 使用空格键拉弓,只有在指定射击区域内才能拉弓
  • 使用鼠标左键射击
  • 使用鼠标右键打开瞄准镜
  • 使用F1切换鸟瞰图视角,便于定位当前位置

游戏中有两个射击场,一个在迷宫尽头,一个在山顶。射击场分别有两个运动靶和两个静态靶,射中运动靶加十分,射中静态靶加二十分。

阅读更多...

鼠标打飞碟

1. 实验目的

本实验旨在实现一个简单的飞碟生成与控制系统,包含飞碟的生成、运动和回收。通过使用面向对象编程和设计模式,创建一个飞碟管理系统,支持飞碟的飞行行为、回收行为以及动态的动作管理。主要内容包括:

  • 飞碟生成系统的实现;
  • 飞碟飞行行为的设计与实现;
  • 动作管理系统的设计,支持多种飞碟动作;
  • 接口与回调的使用,确保系统的扩展性。

2. 游戏架构

本游戏包括以下几个主要组件:

  1. SSActionManager:动作管理器,负责管理所有飞碟动作的执行,支持动作的添加、更新和删除。
  2. SSAction:抽象类,代表一种飞碟动作,所有具体的动作类都需要继承自此类。
  3. DiskFactory:飞碟生成器,负责飞碟的创建和管理。生成的飞碟可以加入到活动列表中,供其他组件控制。
  4. DiskAttributes:飞碟属性类,包含飞碟的各项数据,如分数、速度、旋转角度等。
  5. RoundController:回合控制器,负责协调飞碟动作的执行。

UML图

3. 具体实现

3.1 飞碟动作管理

系统使用了SSAction抽象类来定义所有飞碟动作的基础行为。SSActionManager类则是动作的管理器,负责控制飞碟的飞行与回收。通过实现IActionManager接口和IActionCallback接口,使得飞碟动作的管理更加模块化和灵活。主要的动作类型包括:

  • 飞行动作
    • CCFlyAction负责飞碟按固定速度沿X、Y轴飞行。
    • PhysicFlyAction负责模拟飞碟的物理运动,控制飞碟的速度。
3.2 飞碟生成与控制

DiskFactory类负责生成飞碟,管理飞碟的回收与重复使用。生成的飞碟会被加入到活动列表中,通过SSActionManager控制其飞行动作。每个飞碟都会有一个与之关联的DiskAttributes类,包含飞碟的速度、旋转角度和其他属性。

3.3 动作管理与更新

SSActionManager在每一帧更新时检查所有飞碟的状态,并对当前的动作进行更新。通过RunAction方法将新的动作添加到动作队列中,并通过Update方法更新正在进行的动作。

3.4 设计模式与接口

系统采用了接口和回调机制,确保了动作管理系统的灵活性和可扩展性。IActionManager接口定义了动作管理器的基本功能,而IActionCallback接口则用于飞碟在动作执行完成后通知管理器。

游戏脚本

4. 实验结果

通过实现以上系统,我们成功地生成并控制了飞碟的运动。系统能够动态生成飞碟并执行不同的飞行动作,包括物理飞行和自定义速度飞行。此外,飞碟的生成与回收通过DiskFactory对象池进行管理,确保资源的高效使用。

5. 总结

本实验通过实现飞碟的生成与控制系统,深入理解了如何使用面向对象设计模式管理复杂的对象行为。通过将动作和管理逻辑分离,使得系统具有了良好的扩展性,可以轻松地添加新的飞行动作类型。接口和回调机制的应用也为系统提供了更高的灵活性和可维护性。

牧师与魔鬼

1. 游戏规则

三名牧师与三名魔鬼来到了河的两岸,河上只有一条船,船上一次只能乘坐两个人。只有在船上有人时,船才能移动。

两岸中的任意一岸,只要魔鬼的数量大于牧师的数量,魔鬼就会吃掉牧师,游戏结束。

游戏胜利的条件是:所有牧师与魔鬼都到达对岸。

在本游戏中,黑山羊代表魔鬼,白绵羊代表牧师。

阅读更多...

Unity中的空间与运动

一. 简易运动与叠加

1. 运动与复合运动
  • 创建一个游戏对象

  • 创建一个脚本MoveLeft,脚本会使对象每秒向左移动一个单位

    1
    2
    3
    4
    5
    6
    7
    8
    9
    public class MoveLeft : MonoBehaviour{
    // Use this for initialization
    void Start(){}

    // Update is called once per frame
    void Update(){
    this.transform.position += Vector3.left * Time.deltaTime;
    }
    }
    • 其中,Vector表示三维向量,Vector3.left 是单位常数,共有up, down, forward, back等属性
    • Time.deltaTime 这个循环与上个循环之间的时间差
  • 仿照代码创造一个脚本MoveUp,加上speed属性

    1
    2
    3
    public int speed = 2;
    ...
    this.transform.position += speed * Vector3.left * Time.deltaTime;
    • 此脚本会使对象每秒向上平移两个单位
  • 把两个脚本都拖动到游戏对象上,发现对象向左上平移

    • 在对象的属性栏里找到脚本,更改那里新增的speed属性,速度会变化
    • 注意,这里不用新建空对象!因为是游戏对象自己独立的运动。
2. Transform组件

未完待续

用Construct3制作平台跳跃游戏

1. 前言

Construct 3是一款基于 HTML5 的 2D 游戏开发工具,它免于编程的特点能够帮助不会写代码的人构建游戏。它能够在浏览器中运行,实时调试修改,并且能导出到网页、桌面、移动设备等多种平台。对于游戏制作初学者而言,它是一个理想而友好的入门工具。

本博客记录了笔者初次使用Construct 3构建简单的平台跳跃游戏的思考与实践过程。

本游戏所有图片素材来源于tobyfox制作的独立游戏《undertale》,并非笔者本人绘制!

Construct 3网页直通车:https://editor.construct.net/?startTour

游戏文件下载(可导入Construct 3试玩)

在线试玩连接:https://boreascup.github.io/DogJumpIce/

阅读更多...
  • Copyrights © 2024 Boreascup

请我喝杯咖啡吧~

支付宝
微信