当前位置: 首页 > news >正文

做商城网站技术要点济南教育论坛网站建设

做商城网站技术要点,济南教育论坛网站建设,淄博百度网络推广公司,网络营销是什么的必然产物Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释#xff0c;可供学习Alex教程的人参考 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili Player.cs using System.Collections; using System.Collections.Generic; using Unity.VisualScripting; u…Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释可供学习Alex教程的人参考 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili Player.cs using System.Collections; using System.Collections.Generic; using Unity.VisualScripting; using UnityEngine;public class Player : MonoBehaviour {[Header(Move Info)]public float moveSpeed;//定义速度与xInput相乘控制速度的大小public float jumpForce;#region 定义Unity组件public Animator anim { get; private set; }//这样才能配合着拿到自己身上的animator的控制权public Rigidbody2D rb { get; private set; }//配合拿到身上的Rigidbody2D组件控制权#endregion#region 定义Statespublic PlayerStateMachine stateMachine { get; private set; }public PlayerIdleState idleState { get; private set; }public PlayerMoveState moveState { get; private set; }public PlayerJumpState jumpState { get; private set; }public PlayerAirState airState { get; private set; }//与其说是airState不如说是FallState#endregionprivate void Awake(){stateMachine new PlayerStateMachine();//通过构造函数在构造时传递信息idleState new PlayerIdleState(this, stateMachine, Idle);moveState new PlayerMoveState(this, stateMachine, Move);jumpState new PlayerJumpState(this, stateMachine, Jump);airState new PlayerAirState(this, stateMachine, Jump);//this 就是 Player这个类本身}//Awake初始化所以State为所有State传入各自独有的参数及animBool以判断是否调用此动画与animatoin配合完成private void Start(){anim GetComponentInChildrenAnimator();//拿到自己身上的animator的控制权rb GetComponentRigidbody2D();stateMachine.Initialize(idleState);}private void Update()//在mano中update会自动刷新但其他没有mano的不会故需要在这个updata中调用其他脚本中的函数stateMachine.currentState.update以实现 //stateMachine中的update{stateMachine.currentState.Update();//反复调用CurrentState的Update函数}public void SetVelocity(float _xVelocity,float _yVelocity){rb.velocity new Vector2(_xVelocity, _yVelocity);//将rb的velocity属性设置为对应的想要的二维向量。因为2D游戏的速度就是二维向量}//控制速度的函数此函数在其他State中可能会使用但仅能通过player.SeVelocity调用 }PlayerState.cs using System.Collections; using System.Collections.Generic; using System.Security.Authentication.ExtendedProtection; using UnityEngine; //被继承的总类后面的所以state都需要继承它 //实际上Player并没有进入过这个状态没有调用此脚本所有的调用均属于此脚本的子脚本 public class PlayerState {protected PlayerStateMachine stateMachine;//创建PlayerStateMachine类以承接来自Player.cs传过来的东西protected Player player;//创建Player类以承接来自Player.cs传过来的东西#region Unity组件protected Rigidbody2D rb;//纯简化将player.rb -- rb#endregionprivate string animBoolName;//控制此时的anim的BOOL值protected float xInput;//设置一个可以保存当前是否在按移动键的变量public PlayerState(Player _player,PlayerStateMachine _stateMachine,string _animBoolName){this.player _player;this.stateMachine _stateMachine; this.animBoolName _animBoolName;}//构造函数用于传递信息public virtual void Enter(){player.anim.SetBool(animBoolName, true);//通过animator自带的函数将animator里的Bool值改变为想要的值rb player.rb;//纯简化将player.rb -- rb}public virtual void Update(){xInput Input.GetAxisRaw(Horizontal);//对于键盘和游戏杆输入该值将处于 -1...1 的范围内。 由于未对输入进行平滑处理键盘输入将始终为 -1、0 或 1。 如果您想自己完成键盘输入的所有平滑处理这非常有用。 player.anim.SetFloat(yVelocity, rb.velocity.y);//通过animator自带的函数将animator里的Float值改变为想要的值,改变yVelocity以控制Jump与Fall动画的切换}public virtual void Exit(){player.anim.SetBool(animBoolName, false);//通过animator自带的函数将animator里的Bool值改变为想要的值}}PlayerStateMachine.cs using System.Collections; using System.Collections.Generic; using UnityEngine;public class PlayerStateMachine {public PlayerState currentState { get; private set; }public void Initialize(PlayerState _startState){currentState _startState;currentState.Enter();}//初始化状态函数及通过将idleState传送进来以便于调用idleState中的Enter函数public void ChangeState(PlayerState _newState){currentState.Exit();currentState _newState;currentState.Enter();}//更改状态函数//1.调用当前状态的Exit函数使动画为false//2.传入新的状态替换原来的状态//3.调用新的状态的Enter函数 }PlayerGroundState.cs using System.Collections; using System.Collections.Generic; using UnityEngine; //GroundState用于保证只有在Idle和Move这两个地面状态下才能调用某些函数并且稍微减少一点代码量 public class PlayerGroundState : PlayerState {public PlayerGroundState(Player _player, PlayerStateMachine _stateMachine, string _animBoolName) : base(_player, _stateMachine, _animBoolName){}public override void Enter(){base.Enter();}public override void Update(){base.Update();if (Input.GetKeyDown(KeyCode.Space)){stateMachine.ChangeState(player.jumpState);}//空格切换为跳跃状态}public override void Exit(){base.Exit();}}PlayerIdleState.cs using System.Collections; using System.Collections.Generic; using UnityEngine;public class PlayerIdleState : PlayerGroundState//继承函数获得PlayerState里的所有函数和参数 {public PlayerIdleState(Player _player, PlayerStateMachine _stateMachine, string _animBoolName) : base(_player, _stateMachine, _animBoolName){}//构造函数用于传递信息。//当外补New出对象时New出的对象里传入参数public override void Enter(){base.Enter();}public override void Exit(){base.Exit();}public override void Update(){base.Update();if(xInput ! 0){stateMachine.ChangeState(player.moveState);//在这里我们能使用Player里的东西主要是因为我们通过构造函数传过来Player实体如果不传则无法使用已经存在了的Player实体。}} }PlayerMoveState.cs using System.Collections; using System.Collections.Generic; using UnityEngine;public class PlayerMoveState : PlayerGroundState {public PlayerMoveState(Player _player, PlayerStateMachine _stateMachine, string _animBoolName) : base(_player, _stateMachine, _animBoolName){}//构造函数用于传递信息。//当外补New出对象时New出的对象里传入参数public override void Enter(){base.Enter();}public override void Exit(){base.Exit();}public override void Update(){base.Update();player.SetVelocity(xInput*player.moveSpeed, rb.velocity.y);//player.rb.velocity.y默认的为0,player.moveSpeed在player中定义但可以在Unity引擎中更改if (xInput0){stateMachine.ChangeState(player.idleState);//在这里我们能使用Player里的东西主要是因为我们通过构造函数传过来Player实体如果不传则无法使用已经存在了的Player实体。}} }PlayerJumpState.cs using System.Collections; using System.Collections.Generic; using UnityEngine;public class PlayerJumpState : PlayerState {public PlayerJumpState(Player _player, PlayerStateMachine _stateMachine, string _animBoolName) : base(_player, _stateMachine, _animBoolName){}public override void Enter(){base.Enter();rb.velocity new Vector2(rb.velocity.x, player.jumpForce);//将y轴速度改变}public override void Update(){base.Update();if (rb.velocity.y 0){stateMachine.ChangeState(player.airState);//与其说是airState不如说是FallState}}public override void Exit(){base.Exit();}}PlayerAirState.cs using System.Collections; using System.Collections.Generic; using UnityEngine;public class PlayerAirState : PlayerState {public PlayerAirState(Player _player, PlayerStateMachine _stateMachine, string _animBoolName) : base(_player, _stateMachine, _animBoolName){}public override void Enter(){base.Enter();}public override void Update(){base.Update();if (rb.velocity.y 0){stateMachine.ChangeState(player.idleState);}//暂时使用因为这样写是由错误的}public override void Exit(){base.Exit();}}
http://www.pierceye.com/news/193255/

相关文章:

  • 天河区建设网站品牌网站建设小8蝌蚪
  • 深圳市企业网站seo点击软件小程序游戏开发公司
  • 南宁企业网站设计公怎么进wordpress
  • 商务网站建设一万字做视频剪辑接私活的网站
  • 网站开发绪论phpstudy建wordpress
  • 网站建设的基本流程有哪些wordpress产品页布局
  • 写过太原的网站免费漫画大全免费版
  • 毕业设计做系统好还是网站好冠县网站建设公司
  • 网站管理制度建设开发一个网站需要多少时间
  • 高校网站建设说明书微信公众号涨粉 网站
  • 深圳网站建设公司哪里好中国施工企业管理协会官网
  • 网站自动抢注步步高学习机进网站怎么做
  • 带域名的网站打不开深圳网站优化多少钱
  • 中国空间站科幻作文1000字网站建设从化
  • 做网站买一个域名就够了吗cn域名知名网站
  • 社科联网站建设个人网页英文
  • 做房产推广那个网站好网站改版建设原则
  • 网站建设 语言成都app
  • 免费建站的手机app专业做网站设计公司价格
  • 江苏宜兴做网站的电话seo基础培训
  • 企业手机端网站模板下载济南公司建站模板
  • 一般公司做网站多少钱南昌市房产网
  • 惠州网站小程序建设做公司永久免费网站什么好
  • 湖南涟钢建设有限公司网站局网站建设工作总结
  • 家乡ppt模板免费下载网站合肥百姓网网站建设
  • 免费整套ppt模板下载网站东莞建设教育网站
  • 漯河网站建设漯河ps制作个人网站首页
  • 电商网站公司软件开发和软件研发
  • 网站建设浙江公司网站开发运营新人要注意什么
  • 外贸网站模板哪里下载家里电脑可以做网站服务器吗