现在的计划:1.明确任务(毕设=考试),先不用管其他任何事,怎么学,反正最终要完成的是这个
2.时间第一(快),最高效的方式当然就是直接做,(就像直接做期末卷一样)那么必然会有很多东西不会,但是没关系
从不会到学会的过程就是靠自己了
3.就像富兰克林写作法一样 网页 这是要模仿的、(互联网永远是最好的老师555)
纠结一:各种教学眼花缭乱,从哪个开始?
教学视频b站,油土鳖都有很多,不要贪心,跟着做完一个再选下一个,我们直接选择项目实践的类型
纠结二:毕设难道就用跟着视频做出来的作品吗?
在已有掌握的基础上增加自己创作的内容完成毕设,没时间磨蹭了呜呜呜呜呜55555555,还要考研毕设就不要追求完美了,预计在一个月内完成哈,从3月21日开始
GKD GKD GKD GKD GKD GKD GKD
一直很喜欢黑魂,傅老师的复刻使用的是较低版本unity,为了尽量减少意外选择这个老外的教程,
3.22
问题一,我们需要人物模型,前往Mixamo网站下载,导入unity发现是白色的没有材质,于是百度,
方法如下
搞定 ,说好的加群分享资源结果也没有,坑爹啊
》》前往package manager下载了一个叫Input system的,
3.23,
原来作者用的是unity 商店里Synty Studios制作的Polygon素材,虽然好像还有很多其他好东西,但是先不管了,经过和群主交流找到了素材
右键create一个Input actions,重命名为PlayerControls然后勾选generate c# class 然后apply,
(不用管,只需要知道是一个控制输入的,哪有时间研究,记住,然后尽快让项目能运行起来就够了)
双击PlayerControls,add Action Map,命名Player Movement,双击new action 重命名为Movement,action Type改为pass through ,control type改为vector2,将Movement下原有bindling删除,添加2D vector,重命名为WASD,mode改为analog,然后上改为W[Keyboard]
其余类推
再添加new action 叫Camera,然后将binding的path绑定为Right Stick [GamePad] ,然而,我们这些都是灰色不可选,我们也没有后面要的delta [mouse]。
博客网页 官方手册
上网搜集了下关于input system的知识,
没什么能难倒我hhh,把Camera的action type也改成pass through,control type我改成了any,然后就行了,感谢博客,感谢互联网
添加完right stick后把processors(处理器)改成stick deadzone,,将delta mouse 的改成normalize Vector2
**
3.24
**
下载了一些免费的环境和武器素材,要钱的都好贵啊。。。
不过突然之间有了好多关卡设计的想法!!就设计成魂一那样无缝连接的地图吧!,不过已经可预知的几个问题
1,不同的敌人类型,以及boss都需要自己的AI和武器招式技能,
2,玩家切换装备,背包栏,物品栏,
3,音效,特效,这些应该相比好办,
总之先跟着视频做吧,之后再加上这些功能,反正没有什么是查不到的
1》》到project Settings里的Input System Package,点Create Settings Asset,,将Default Hold Time改成0
2》》给Player添加Capsule Collider组件,调整一下collider,不用和视频参数一样,但radius调成了0.3,,再添加一个rigidbody,然后freeze rotation xyz,
3》》开始编写脚本((再次强调不会,忘记,不知道也没有关系,原则是快,只需要记住,几分钟的代码要敲很久,这样的速度要出问题,所以不要纠结了)) 博主也要看笔记hhhhhhhhh,都是走一步看一步吗,
关于编程,当然还是功能需求分析。比如第一个类,根据名称就知道提供 输入处理 的功能,
namespace SG
{
public class InputHandler : MonoBehaviour
{
public float horizontal;
public float vertical;
public float moveAmount;
public float mouseX;
public float mouseY;
PlayerControls inputActions;//这个就是input system自动生成的脚本
CameraHandler cameraHandler;
Vector2 movementInput;
Vector2 cameraInput;
private void Awake()
{
cameraHandler = CameraHandler.singleton;
}
private void FixedUpdate()
{
float delta = Time.fixedDeltaTime;
if(cameraHandler!=null)
{
cameraHandler.FollowTarget(delta);
cameraHandler.HandleCameraRotation(delta, mouseX, mouseY);
}
}
public void OnEnable()
{
if(inputActions==null)
{
inputActions = new PlayerControls();
inputActions.PlayerMovement.Movement.performed += inputActions => movementInput = inputActions.ReadValue<Vector2>();
//=> 是朗姆达表达式中的用法,就是把=>左边声明的变量带入到=>右边的表达式或者代码段里。=>前面的是参数,后面的是函数体。
inputActions.PlayerMovement.Camera.performed += i => cameraInput = i.ReadValue<Vector2>();
}
inputActions.Enable();
}
private void OnDisable()
{
inputActions.Disable();
}
public void TickInput(float delta)
{
MoveInput(delta);
}
private void MoveInput(float delta)
{
horizontal = movementInput.x;
vertical = movementInput.y;
moveAmount = Mathf.Clamp01(Mathf.Abs(horizontal) + Mathf