1.动画制作
1。把Player帧动画直接拖入到Scene中,unity会自动生成改物体的默认idel动画。
2。选定游戏物体,Ctrl+6 打开Animation,可以手动添加帧动画。
3。在Animator中,控制动画切换。在Parameters中添加条件,右键动画,make Transition 建立转换,记得Has Exit Time取消勾选,
勾选代表播放完上一个动画才播放下一个动画,这里要直接转换。
4。脚本中。在该游戏物体脚本中 实现条件控制。
先声明Animator private Animator animator;
在Awake中初始化,animator=GetComponent
();
在if条件里完成控制。animator.setFloat(" ", ); or animator.SetBool(" ",true);
2.人物控制
1。首先给人物添加rigidbody2D。 在脚本中得到该游戏物体。
声明 private Rigidbody2D rigidbody;
Awake()中初始化,rigidbody2D=GetCompont();
2。人物移动。
水平移动。
定义一个速度常量 public float player_velocity=50;
水平方向的力。float h=input.GetAxis("Horizontal"); h<0,向左。h>0,向右。
if(h>0.05f) rigidbody2D.AddForce(vector2.right*player_velocity); 转向 transform.localScale=new Vector(1,1,1);
if(h<-0.05f) rigidbody2D.AddForce(-vector2.right*player_velocity); 转向 transform.localScale=new Vector(-1,1,1);
跳跃。
垂直速度,public float jump_velocity=50;
得到人物的速度。 Vector2 velocity=rigidbody2D.velocity;
按下空格跳跃 if(input.GetKeyDown(KeyCode.Space)) velocity.y=jump_velocity; rigidybody2D.velocity=velocity;
3。地面,墙壁区分。
首先为各个物体添加BoxCollider2D.和标签Tag (Player,Ground,Wall)
添加条件 bool isGround = false; bool isWall = false;
碰撞检测。void OnCollisionEnter2D(Collision collision){ if(collision,collider.tag=="Ground"){isGround=true;}}
void OnCollisionExit2D(Collision collision){ if(collision.collider.tag=="Wall"){isWall=false;} }
4。人物在墙上的操作
首先判断是否在墙上滑行。bool isSlider;
if(isGround==true || isWall=false) isSlider=false;
人物控制都是在 isSlider==false;
碰到墙转向 void ChangeDir(){ isSlider=true;if(wallTransform.position.x
{ transform.localScale=new Vector3(1,1,1); } }
5。相机跟随
获得人物位置 public Transform target;
获得相机位置Vector3 pos=transform.position;
位置差:pos.x=target.position-transform.position;
相机位置:transform.position=pos;
6。敌人控制(转向,跟随)
当角色与敌人距离小于某个数值,敌人开始朝着角色移动。
设置一个临界距离 public float attackDistance=15;
得到角色位置。PlayerTransform=GameObject.FindGameObjectWithTag("Player").transform;
距离差:float distance=Vector3.Distance(PlayerTransform,position-transform.position);
判断if(distance
{ transform.localScale=new Vector3(-1,1,1) }
移动:Vector3 dir=PlayerTransform.position-transform.positon;
transform.position=dir.normalize*enemySpeed*Time.deltatime+transform.position;}
3.声音添加
在相机中添加一个组件AudioSource。
为相机添加一个脚本 AduioManager{ }
用单利模式
public static AudioManager _instance;
private AudioSource audio;
public AudioClip jumpAudio;
初始化 void Awake()=> _instance=this;
调用方法:public void PlayJumpAudio(){ audio.PlayOneShot(jumpAudio); }
使用方法 :AudioManager._instance.PlayJumpAudio();
PS.Trail Render 添加头巾