通过滑动手势控制摇杆移动并且通过移动的速度控制能量条的增长 Unity

//当进入决斗模式时,判断玩家是否移动摇杆
if(Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Moved){
	Ray ray = Camera.main.ScreenPointToRay (Input.GetTouch(0).position);
	RaycastHit hit;
	if(Physics.Raycast (ray, out hit, 1000)){
		print(hit.transform.name.ToString());
		if(hit.transform.name=="rockerColorUp"){
			//获取手势移动的速度
			Vector2 touchDeltaPosition= Input.GetTouch(0).deltaPosition;
			float distance=Mathf.Sqrt(Mathf.Pow(touchDeltaPosition.x,2f)+Mathf.Pow(touchDeltaPosition.y,2f));
			velocity=Mathf.Abs(distance/Time.deltaTime); 
                        velocity=Mathf.Sqrt(velocity)/10000;
			//根据手势移动速度决定能量条的增长,同时能量条有一个固定的减速
            		GameSetting.energyBarValue+=(velocity-GameSetting.BarSpeedDown[GameSetting.CompetitorNow.id-1]);
			GameSetting.energyBarValue=1;
			energyBar.UpdateBar_MJM(GameSetting.energyBarValue,false)
			//控制摇杆的移动
			if(target){
        			rocker.transform.Rotate(0,0,-500*Time.deltaTime);
			}
			else{
				rocker.transform.Rotate(0,0,500*Time.deltaTime);
			}
			if(rocker.transform.localEulerAngles.z<=340&&rocker.transform.localEulerAngles.z>=20&&target){
				target=false;
				rocker.transform.localEulerAngles=new Vector3(0,0,340);
			}
			if(rocker.transform.localEulerAngles.z>=20&&rocker.transform.localEulerAngles.z<=340&&!target){
				target=true;
				rocker.transform.localEulerAngles=new Vector3(0,0,20);
			}

		}
	}
  }
  else{
	//在能量条值大于0时,且玩家没有手势动作时,能量条有一个固定的减速
	if(GameSetting.energyBarValue>=0){
		GameSetting.energyBarValue-=GameSetting.BarSpeedDown[GameSetting.CompetitorNow.id-1];
		energyBar.UpdateBar_MJM(GameSetting.energyBarValue,false);
	}
	rocker.transform.localEulerAngles=new Vector3(0,0,0);
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值