我已经为移动创造了一个双棒运动系统。我有一个角色在一个操纵杆的影响下移动正确。另一个操纵杆,我想要的设计是:
正在发生的事情是,当游戏开始的时候,角色会不断地射击,如果我移动ShootJS,角色就会旋转。我完全搞不懂为什么会发生这种事。
这是我的密码。预先感谢任何人提供的任何帮助。
使用System.Collections.Generic;使用UnityEngine;使用UnityEngine.UI;使用UnityEngine.AI;使用Ludiq;使用Bolt;公共类PlayerJSControlSc : MonoBehaviour { public GameObject player;public NavMeshAgent导航;公共文本stateText;公共浮点数moveSpeed;公共动画师;public FloatingJoystick moveJS;public FloatingJoystick shootJS;公共浮点数rotationSpeed = 10;公共int弹药;公共int mag;公共转换shotSpawn;公共浮点数;公共文本存储;int #en20 20#;// Start在第一个帧更新void (){ stateText.text = "";nav = player.GetComponent();moveJS =GameObject.Find(“浮动JS_Move").GetComponent();shootJS =GameObject.Find(”浮动JS_Shoot“).GetComponent()之前调用;} // Update每帧void (){ movePlayer();playerShoot();ammoCount.text = currentMag+ "/“+ ammo;} public void movePlayer() { //float x=Input.GetAxis(”水平“);//float =Input.GetAxis(”垂直“);ammoCount.text x= moveJS.Horizontal;float = moveJS.Vertical;nav.velocity =新的Vector3(x * moveSpeed,0,y* moveSpeed);if (nav.velocity.x != 0\x\{ animator.SetBool("isRunning",true);}moveSpeed{ animator.SetBool("isRunning",false);} public void playerShoot() { bool isAiming = false;float x= shootJS.Horizontal;浮点数z= shootJS.Vertical;if (x != 0\x=0\x= 0) { isAiming =真;/* Vector3 lookDir =新Vector3(x,0,z);四元数lookRotation = Quaternion.LookRotation(lookDir,Vector3.up);浮动步长= rotationSpeed * Time.deltaTime;player.transform.rotation = Quaternion.RotateTowards(lookRotation,transform.rotation,step);*/ float myAngle = Mathf.Atan2(x,z) * Mathf.Rad2Deg;float bodyRotation = myAngle +player.Trans.eulerAngles.y;player.transform.Rotate( 0,my角度,0,Space.World);}}{ if (currentMag > 0) {实例化( shotSpawn.position,shotSpawn.rotation);} IEnumerator reload() { ammo = ammo;currentMag = mag;产生返回新的WaitForSeconds(reloadTime);}
发布于 2020-09-04 16:29:38
你叫 playerShoot()
->,不移动-> shoot()
。
同样,playerShoot()
->也没有移动-> player.transform.Rotate( 0,myAngle,0,Space.World);
。
我觉得你应该做的是
仅在两个输入都为0
shoot
移动而不是增加shoot
有点像
private bool lastFrameMoved;
public void playerShoot()
{
float x = shootJS.Horizontal;
float z = shootJS.Vertical;
if (x != 0 || z != 0)
{
var lookDir = new Vector3(x, 0, z);
var lookRotation = Quaternion.LookRotation(lookDir, Vector3.up);
player.transform.rotation = lookRotation;
lastFrameMoved = true;
}
else
{
if(lastFrameMoved)
{
shoot();
}
lastFrameMoved = false;
}
}
发布于 2020-09-05 11:25:23
我解决了螺栓的外观旋转(因为它帮助我可视化)。我很快就会解决拍摄部分。我正在使用Fenerax工作室的奇妙的Joystick包。
https://stackoverflow.com/questions/63740321
复制相似问题