网络民工——Alpha冲刺总结随笔(改)
| 这个作业属于哪个课程 | 2023年福大-软件工程实践-W班 |
|---|---|
| 这个作业要求在哪里 | 团队作业——站立式会议+alpha冲刺 |
| 这个作业的目标 | 对整个Alpha冲刺的阶段性总结 |
| 其他参考文献 | 《构建之法》 |
目录
- 一、项目预期计划、现实进展
- 完成情况表格
- 现实进展
- 项目仓库
- 项目内容详情
- 二、收获和心得体会、组员分工协作情况、工作量比例
- 收获和心得体会
- 组员分工协作情况
- 在Alpha阶段的工作量比例
- 三、下阶段展望
- 功能方面
- 游戏方面
一、项目预期计划、现实进展
完成情况表格

现实进展
项目仓库
项目内容详情
游戏场景预览

代码规范的制定

完成数据管理器

角色跳跃、下蹲代码

主菜单、设置界面UI和部分逻辑


人物素材




场景素材

修正数据表格式,生成Data与json,完善各个UI,完成道具显示界面,定义部分实体,定义敌人AI状态机,完善资源管理

增加消息提示框

实现人物控制器
using System.Collections;
using System.Collections.Generic;
using System.Xml.Serialization;
using Unity.VisualScripting.Dependencies.NCalc;
using UnityEngine;
public class PlayerController : MonoBehaviour
{
private Rigidbody2D rb;
private BoxCollider2D coll;
[Header("移动参数")]
public float speed = 8f;
//下蹲时速度除以的基数
public float crouchSpeedDivisor = 3f;
public float jumpForce = 4f;
float jumpTime;
[Header("状态")]
public bool isCrounch;
public bool isOnGround;
public bool isJump;
[Header("环境检测")]
public LayerMask groundLayer;
//x轴力的方向
private float xVelocity;
//按键设置
bool jumpPressed;
bool jumpHeld;
bool crouchHeld;
//碰撞体尺寸
Vector2 colliderStandSize;
Vector2 colliderStandOffset;
Vector2 colliderCrouchSize;
Vector2 colliderCrouchOffset;
void Start()
{
rb = GetComponent<Rigidbody2D>();
coll = GetComponent<BoxCollider2D>();
colliderStandSize = coll.size;
colliderStandOffset = coll.offset;
colliderCrouchSize = new Vector2(coll.size.x, coll.size.y * 0.5f);
colliderCrouchOffset = new Vector2(coll.offset.x, coll.offset.y-0.25f*coll.size.y);
}
void Update()
{
jumpPressed = Input.GetButtonDown("Jump");
// jumpHeld = Input.GetButton("Jump");
crouchHeld = Input.GetButton("Crouch");
}
private void FixedUpdate()
{
PhysicsCheck();
GroundMovement();
AirMovement();
}
void PhysicsCheck()
{
if (coll.IsTouchingLayers(groundLayer))
{
isOnGround = true;
isJump = false;
}
else
{
isOnGround = false;
}
}
private void GroundMovement()
{
if (crouchHeld && !isCrounch && isOnGround)
Crouch();
else if (!crouchHeld && isCrounch)
StandUp();
else if (!isOnGround && isCrounch)
StandUp();
xVelocity = Input.GetAxis("Horizontal");
if (isCrounch)
xVelocity /= crouchSpeedDivisor;
rb.velocity = new Vector2(xVelocity * speed, rb.velocity.y);
FlipDirection();
}
private void AirMovement()
{
if (jumpPressed && isOnGround && !isJump)
{
isOnGround = false;
isJump = true;
rb.AddForce(new Vector2(0f, jumpForce), ForceMode2D.Impulse);
//Debug.Log("jump");
}
}
//左右翻转角色
private void FlipDirection()
{
if (xVelocity < 0)
transform.localScale = new Vector2(-1.77f, 1.35f);
if (xVelocity > 0)
transform.localScale = new Vector2(1.77f, 1.35f);
}
private void Crouch()
{
isCrounch = true;
coll.size = colliderCrouchSize;
coll.offset = colliderCrouchOffset;
}
private void StandUp()
{
isCrounch = false;
coll.size = colliderStandSize;
coll.offset = colliderStandOffset;
}
}
完成角色动画控制

人物移动代码

怪物AI
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Monster_Slime : MonoBehaviour
{
public Animator anim;
private Collider2D coll;
private Rigidbody2D rb;
public int speed;
//---------上面照旧----------
public Transform left, right;//左边边界的引用
private float leftMargin, rightMargin;//Frog可以移动的左右边界
private bool faceRight = true;//开始青蛙是面向右的
void Start()
{
anim = GetComponent<Animator>();
coll = GetComponent<Collider2D>();
rb = GetComponent<Rigidbody2D>();
//分别获得左右边界位置的x轴的大小
leftMargin = left.position.x;
rightMargin = right.position.x;
//防止左边边界跟随敌人移动,获得后直接销毁
Destroy(left.gameObject);
Destroy(right.gameObject);
}
void Update()
{
Movement();
}
//基础移动
void Movement()
{
//如果面向右
if (faceRight)
{
anim.SetBool("run", true);
rb.velocity = new Vector2(speed, rb.velocity.y);
//当敌人超过右边界时
if (transform.position.x > rightMargin)
{
rb.velocity = new Vector2(0, 0);
transform.localScale = new Vector3(-1, 1, 1);
faceRight = false;
}
}
else
{
anim.SetBool("run", true);
rb.velocity = new Vector2(-speed, rb.velocity.y);
//当敌人越过左边界时
if (transform.position.x < leftMargin)
{
rb.velocity = new Vector2(0, 0);
transform.localScale = new Vector3(1, 1, 1);
faceRight = true;
}
}
}
}
完成人型动画控制、完成地图生成

完成角色地面移动

完成角色空中移动以及左右转向

完道具管理和拾取逻辑

完成战斗界面主界面逻辑

二、收获和心得体会、组员分工协作情况、工作量比例
收获和心得体会

组员分工协作情况

使用Teambition进行团队项目管理

使用GitCode上传后端与前端的内容

通过线下站立式会议的方式进行进度对接,特殊情况下也会使用腾讯会议进行开会


在Alpha阶段的工作量比例

三、下阶段展望
功能方面
实现战斗交互
制作人员面板
丰富地图生成逻辑
完善后台功能
部署到服务器上
游戏方面
确认所有游戏道具以及收集相关素材
UI界面素材
游戏数值设计
备战场景的搭建
添加游戏音效
相关推荐
Songhome-fe
描述 Beatbay Alpha是特定于歌曲的任务管理Web应用程序的第一个版本。 它应用于收听歌曲的待办事项,存储歌曲元数据以及存储有关轨道的其他有用信息。 它处理音频和图像的文件上传。 主要功能包括用户环境中歌曲的状态列表,以及每首歌曲的仪表板,用户可以在其中编辑有关歌曲的信息并发布有关歌曲的注释/任务。 最初,这个想法是我自己的网络应用程序,用于管理我的歌曲/节拍目录。 我希望能够上传歌曲,将元数据附加到它,聆听它。 对于进行中的作品,可以在歌曲上写注释(扩展目标是使注释跳到歌曲中的某个点)。 我还想对dashbaord元素和网格进行设计检修。 最初5天冲刺中的时间矛盾。 为了使用,必须在后端存储库中分配自己的S3存储桶和数据库。 BACKEND REPO - 前端部署- 后端部署- 用户故事 与任何应用程序一样,存在无限的想法,并且时间有限。 最初计划在MVP中构建更多功能
unity 类魂类游戏 有水印 DEMO 动作丰富
unity 类魂类游戏 有水印 DEMO 动作丰富
2d 横版 动作游戏 免费开源!
2d 横版 动作游戏 免费开源!
2026安卓开发从零实战指南:环境搭建、核心基础与避坑干货(适配新版Android_Studio).pdf
2026安卓开发从零实战指南:环境搭建、核心基础与避坑干货(适配新版Android_Studio).pdf
如何实现科研成果转化率的有效提升与技术市场精准对接?.docx
如何实现科研成果转化率的有效提升与技术市场精准对接?


