基础的unity2D游戏角色创建:
最初始的是动画设置。
其次就是脚本创建:
1、playermovement(script)
首先我们要知道的几点是:创建2D角色我们要有一个与地面的接触点,来判断是否与地面接触,这样我们就分为两种情况:1、与地面接触接触的情况.2、不与地面接触的情况:
公共属性和私有属性前期准备:
private Rigidbody2D mybody;
public float speed=5f;//角色移动的速度
Animator anim;//创建声明游戏角色
public Transform groundeCheckPosition;//获取物体三位
public LayerMask goundeplayer;
private bool isGrounded;//检查是否与地面发生碰撞
public float jumpPower=5f;
private bool jumped;
检测点的创建:通过创建空对象在脚底下创建检测点
在update函数中添加代码(update函数:每帧检测)
void update()
{
CheckIfgrounded();
PlayerJump();
}
checkIfGrounded()函数的实现:
起始位置groundedcheckposition向下发射射线,距离为0.1,检测图层为groundeplayer,如果是gourndeplayer图层则返回bool值true。
判断是在地面上,如果在,再判断是否是跳跃状态,如果是则不能再次跳跃,然后设置jump动画的bool值为false
private void CheckIfGrounded(){
IsGournded=Physics2D.Raycast(GroundeCheckPostion,vector.down,0.1f,gourdeplayer);
if (isGrounded) {
if (jumped) {
jumped = false;
anim.SetBool("jump", false);
}
}
}
角色移动函数:
FIxedupdate函数每帧都别调用,与update的区别在于Fixupdate是真实的物理时间真,而update是游戏时间帧,因此一般使用FixUpdate处理有物理刚体的物体Rigboy
private void FixedUpdate()
{
playerWalk();
}
unity2D游戏通过键盘的上下左右键来控制物体移动
InPut.GetAxisRaw的参数有两个:
1、horizontal水平:左键为-1,右键为1
2、Vertical 垂直:上建为1,下键为-1
private void playerWalk()
{
//精灵左右移动的速率
float h = Input.GetAxisRaw("Horizontal");
if (h > 0)
{
mybody.velocity = new Vector2(speed, mybody.velocity.y);
changeDirection(1);//改变精灵的朝向
}
角色跳跃:
private void playerJump()//跳跃
{
if (isGrounded) { //检查是否与地面发生接触
if (Input.GetKey(KeyCode.Space)||(Input.GetKey(KeyCode.Space)&&(Input.GetKey(KeyCode.LeftArrow)||Input.GetKey(KeyCode.RightArrow)))) {
jumped = true;
mybody.velocity = new Vector2(mybody.velocity.x, jumpPower);
anim.SetBool("jump", true);
}
}
}
精灵朝向的翻转:
主要改变的是精灵的locascale:
private void changeDirection(int v)
{
Vector3 s = transform.localScale;
s.x = v;
transform.localScale = s;
}
补充代码:
private void Awake()//激活
{
mybody = GetComponent<Rigidbody2D>();//给mybody一个赋值
anim = GetComponent<Animator>();
}