怎样用Unity3D实现格斗游戏中的搓招?会U3D的校友们提供下思路呗

楼主

蓝么么 [离线]

1★☆☆☆☆

发帖数:474 积分1485
1楼

想试着用U3D做格斗游戏。但现在卡在了“搓招”这里。。不知道要怎么做啊。
格斗游戏中有用小键盘的数字表示方向的术语(如4表示后,6表示前,9表示斜上前,5表示回中之类),所以自己试着写了一个这样的东西:




格斗游戏中不是经常有“显示输入历史”这样的功能吗,想到了这个便这样写了出来。
本来是想,在10个输入履历中,如果其中有三个方向236(↓↘→)是在一个固定短的时间内紧挨着输入的话,就判定为做出了236的出招。但写到这发现不会了。。不知道到底该怎么实现。。
同样,奔跑(dash)的效果也是,快速输入66(前前)即可奔跑,这个又要怎么实现呢?求大佬们提供思路



签名档

我要找工作

2016/4/8 21:19:03

calzz [离线]

1★☆☆☆☆

发帖数:510 积分1593
2楼

另外以下是我写的一些其他的基本功能


//控制角色移动==================================================================
void Move()
{
float h = Input.GetAxisRaw("Horizontal");
float v = Input.GetAxisRaw("Vertical");


//控制角色行走
if (State == PlayerState.Stand && IsGround && v != -1) {
rd.velocity = new Vector2(h * WalkSpeed, rd.velocity.y);
}

//控制角色下蹲
if (v < 0 && IsGround) {
IsCrouch = true;
SetState(PlayerState.Crouch);
}
if (v == 0 && IsGround) {
IsCrouch = false;
SetState(PlayerState.Stand);
}





//控制角色跳跃


float distancefromGround = transform.position.y - ground.transform.position.y;


if (v > 0 && IsGround)
{
rd.AddForce(Vector2.up * JumpPower);
}


//更新动画参数
anim.SetFloat("Horizon", h);
anim.SetFloat("Vertical", v);
anim.SetBool("IsCrouch", IsCrouch);
anim.SetFloat("velocityY", rd.velocity.y);
anim.SetBool("IsGround", IsGround);
anim.SetFloat("GroundDistance", distancefromGround);
}








//判断角色是否在地面============================================================
void OnCollisionEnter2D(Collision2D col) {
if (col.collider.tag == "Ground") { IsGround = true; }
}


void OnCollisionExit2D(Collision2D coll)
{
if (coll.collider.tag == "Ground") { IsGround = false; }
}



2016/4/8 23:06:29
返回本版
1
2

请您先 登录 再进行发帖

快速回复楼主