[Unity3D]水族馆游戏教程四

这篇博客介绍了在Unity3D中如何优化鱼的AI,使其在游动时实现从慢到快再到慢的平滑过渡。作者创建了一个SpeedFlag脚本来控制速度变化,通过分段函数计算速度,使得鱼的游动更自然。文章还展示了修改后的FishAI代码和运行效果。
摘要由CSDN通过智能技术生成

0.接上篇

上一篇,实现了鱼AI的随机游动、自动转向,并且学习了如何分析调试过程中遇到的报错。

本篇将继续优化鱼AI。

1.速度控制器

上一篇虽然实现了鱼的随机游动,但是可以看到,鱼在转向的时候,会显得很突然。因此先要解决这个问题。

我们的思路是,让鱼在刚转向的时候,速度由慢到快,等到游动到快要到达目标点的时候,速度减慢。

在Scripts文件夹下新建SpeedFlag.cs脚本

image-20200412210348941

我们需要的是一个普通的class,因此删除自动生成的MonoBehaviour相关的代码。给当前类添加[Serializable]属性,以方便在Editor中查看变量内容。

using UnityEngine;
using System.Collections;
using System;
[Serializable]
public class SpeedFlag 
{
}

接下来,我们一点一点来完善功能:

  1. <
设计一个基于Java的水族馆管理系统通常会包含以下几个关键部分: 1. **登录模块**: - **用户模型**: User.java,包括用户名(username)、密码(password)等字段,并提供相关的getter和setter方法。 - **登录界面**: 使用Swing或Spring Boot等框架创建GUI,包含输入框、按钮等元素,用于接收用户的用户名和密码。 - **登录处理器**: LoginController.java,处理用户输入并验证,一般通过`AuthenticationService`进行密码加密比对。 ```java public class LoginController { private AuthenticationService authService; public void login(String username, String password) { try { // 加密用户密码 String hashedPassword = authService.hashPassword(password); boolean isMatch = authService.authenticate(username, hashedPassword); if (isMatch) { // 登录成功,跳转到主页面 // ...此处省略登录成功的逻辑... } else { // 显示错误信息 JOptionPane.showMessageDialog(null, "用户名或密码错误"); } } catch (Exception e) { System.out.println("登录失败:" + e.getMessage()); } } } ``` 2. **AuthenticationService**: - 这是一个业务服务类,负责密码的存储和加密以及身份验证。 ```java @Service public class AuthenticationService { @Autowired private UserRepository userRepository; // 对密码进行哈希处理 public String hashPassword(String password) { return BCrypt.hashpw(password, BCrypt.gensalt()); } // 验证用户提供的密码是否匹配数据库中的哈希值 public boolean authenticate(String username, String hashedPassword) { User user = userRepository.findByUsername(username); return user != null && BCrypt.checkpw(password, user.getPassword()); } } ``` 这里假设存在UserRepository作为数据访问层,它负责从数据库查询用户信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

延澈左

小小心意

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值