[Unity 2D] Unity CharacterController2D
我老师说,好记性不如烂笔头
我说,老师你刚说啥 :>
正好最近在看2D的骨骼动画那块,然后看着看着,发现自己好像没怎么做过2D游戏(应该做过,忘记了),随便从官方商店拿了一套资源,做一个小游戏,回忆一下,毕竟我老师说,温故而知新
每次开始写游戏,移动,动画,音效,关卡等等等就来了,然鹅这些都是重复的代码,3D中官方给了CharacterController,Add完事,试着去搜一下CharacterController2D,没有。。。直接在2D Sprite上面加上CharacterController。。。好像也不行,本着有问题找百度的学习态度,找了一个比较好的CharacterController2D Demo
但是,直接加上那肯定不行,怎么也得改一改方法名,抄一遍。。。哈哈哈
对了先附上Demo:https://github.com/prime31/CharacterController2D (这不是我的哦)
=====================================================================
- 键盘控制动画播放
1 void Update() 2 { 3 if( _controller.isGrounded ) 4 _velocity.y = 0; 5 6 if( Input.GetKey( KeyCode.RightArrow ) ) 7 { 8 normalizedHorizontalSpeed = 1; 9 if( transform.localScale.x < 0f ) 10 transform.localScale = new Vector3( -transform.localScale.x, transform.localScale.y, transform.localScale.z ); 11 12 if( _controller.isGrounded ) 13 _animator.Play( Animator.StringToHash( "Run" ) ); 14 } 15 else if( Input.GetKey( KeyCode.LeftArrow ) ) 16 { 17 normalizedHorizontalSpeed = -1; 18 if( transform.localScale.x > 0f ) 19 transform.localScale = new Vector3( -transform.localScale.x, transform.localScale.y, transform.localScale.z ); 20 21 if( _controller.isGrounded ) 22 _animator.Play( Animator.StringToHash( "Run" ) ); 23 } 24 else 25 { 26 normalizedHorizontalSpeed = 0; 27 28 if( _controller.isGrounded ) 29 _animator.Play( Animator.StringToHash( "Idle" ) ); 30 }
1 void Update() 2 { 3 if (_isGround) _velocity.y = 0; 4 5 float tempH = Input.GetAxis("Horizontal"); 6 float tempV = Input.GetAxis("Vertical"); 7 8 if (Mathf.Abs(tempH) > 0.01f) 9 { 10 normalizedHorizontalSpeed = (int)Mathf.Sign(tempH); 11 if (onwerSpr.flipX != normalizedHorizontalSpeed < 0) 12 { 13 onwerSpr.flipX = !onwerSpr.flipX; 14 } 15 16 if(_isGround) onwerAnim.Play(runID); 17 } 18 else 19 { 20 normalizedHorizontalSpeed = 0; 21 if(_isGround) onwerAnim.Play(idleID); 22 }
作为一个经验老道的学渣,抄是一门学问,怎么可能让老师发现
原代码是以按下左右键,导致习惯了CS,CF,QQ飞车,PUBG,lol。。。等等的我,在运行demo的时候,以为demo是有问题的。所以本着利己的宗旨,我把左右移动改用获取x轴的位移;
而播放动画原文是在每次播放动画时都要转化动画对应的HashID,我改用,在Start里面获取并保存对应HashID;
人物的转向,原文是用改变缩放的形式,我改用了SpriteRanderer的转向;
这样是不是看起来就不像抄的了。。hhhh,好好学,好好看 :> (借楼说一句,每次我都想录个屏,发一个效果演示AVI图,然鹅MacQQ这个录屏我到现在也没整明白怎么用,开始之后00:00:00就不动,可能是我不配吧,最终还是一个人扛下了所有。。。)
- 键盘控制移动
学渣还在研究学霸的试卷中,待更新。。。