C# Unity3d滑动跳跃响应性不强
我正在尝试使用unity3D构建android游戏。这是我写的角色控制器脚本。向上滑动部分在代码的末尾,我已经对它的位置进行了评论C# Unity3d滑动跳跃响应性不强,c#,android,unity3d,C#,Android,Unity3d,我正在尝试使用unity3D构建android游戏。这是我写的角色控制器脚本。向上滑动部分在代码的末尾,我已经对它的位置进行了评论 float speed = 11.0f; public float jumpForce = 0.005f; public float FingerInitialPosition = 0f; public float FingerMovedPosition = 0f; public float startTouchPosition = 0f; public flo
float speed = 11.0f;
public float jumpForce = 0.005f;
public float FingerInitialPosition = 0f;
public float FingerMovedPosition = 0f;
public float startTouchPosition = 0f;
public float endTouchPosition = 0f;
public Rigidbody2D rb;
public Vector3 jump;
public int jumpCount;
Vector3 moveDir = Vector3.zero;
// Start is called before the first frame update
void Start()
{
rb = GetComponent<Rigidbody2D>();
jump = new Vector3(0.0f, 1f, 0.0f);
}
void OnCollisionEnter2D(Collision2D col)
{
Debug.Log("Collided");
jumpCount=0;
}
void FixedUpdate()
{
Debug.Log(jumpCount);
if(transform.position.y < -14) { SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex); }
foreach (Touch FingerTouch in Input.touches)
{
if (FingerTouch.position.x < Screen.width / 2)
{
if (FingerTouch.phase == TouchPhase.Began)
{
FingerInitialPosition = FingerTouch.position.x;
}
else if (FingerTouch.phase == TouchPhase.Moved)
{
FingerMovedPosition = FingerTouch.position.x;
if (FingerMovedPosition > FingerInitialPosition)
{
float hval = rb.velocity.x;
hval += 19f;
hval *= Mathf.Pow(0.5f, Time.deltaTime * 10f);
rb.velocity = new Vector2(hval, rb.velocity.y);
}
else if (FingerMovedPosition < FingerInitialPosition)
{
float hval = rb.velocity.x;
hval -= 19f;
hval *= Mathf.Pow(0.5f, Time.deltaTime * 10f);
rb.velocity = new Vector2(hval, rb.velocity.y);
}
}
else if (FingerTouch.phase == TouchPhase.Ended)
{
FingerInitialPosition = 0f;
FingerMovedPosition = 0f;
}
else //NEW PART!//
{
FingerMovedPosition = FingerTouch.position.x;
if (FingerMovedPosition > FingerInitialPosition)
{
float hval = rb.velocity.x;
hval += 19f;
hval *= Mathf.Pow(0.5f, Time.deltaTime * 10f);
rb.velocity = new Vector2(hval, rb.velocity.y);
}
else if (FingerMovedPosition < FingerInitialPosition)
{
float hval = rb.velocity.x;
hval -= 19f;
hval *= Mathf.Pow(0.5f, Time.deltaTime * 10f);
rb.velocity = new Vector2(hval, rb.velocity.y);
}
}
}
// The part I think needs fixing
// The swipe Up part where I make the player jump
if (FingerTouch.position.x > Screen.width / 2)
{
for (int i = 0; i < Input.touchCount; i++)
{
Touch touch = Input.GetTouch(i);
if (touch.phase == TouchPhase.Began)
{
startTouchPosition = touch.position.y;
}
else if (touch.phase == TouchPhase.Ended)
{
endTouchPosition = touch.position.y;
if (endTouchPosition > startTouchPosition)
{
if (jumpCount<1) {
rb.AddForce(jump * jumpForce, ForceMode2D.Impulse);
jumpCount += 1;
}
}
}
}
}
}
}
浮动速度=11.0f;
公共浮子跳线力=0.005f;
公共浮点数初始位置=0f;
公共浮动FingerMovedPosition=0f;
公共浮动开始位置=0f;
公共浮点数endTouchPosition=0f;
公共刚体2d rb;
公共矢量3跳跃;
公共整数跳数;
Vector3 moveDir=Vector3.0;
//在第一帧更新之前调用Start
void Start()
{
rb=GetComponent();
跳跃=新矢量3(0.0f、1f、0.0f);
}
空心OnCollisionInter2D(碰撞2D列)
{
Log(“冲突”);
跳数=0;
}
void FixedUpdate()
{
Debug.Log(jumpCount);
if(transform.position.y<-14){SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);}
foreach(在Input.Touchs中触摸FingerTouch)
{
如果(FingerTouch.position.x<屏幕宽度/2)
{
if(FingerTouch.phase==TouchPhase.Start)
{
FingerInitialPosition=FingerTouch.position.x;
}
否则如果(FingerTouch.phase==TouchPhase.Moved)
{
FingerMovedPosition=FingerTouch.position.x;
如果(FingerMovedPosition>FingerInitialPosition)
{
浮动hval=rb.velocity.x;
hval+=19f;
hval*=数学功率(0.5f,时间延迟*10f);
rb.velocity=新矢量2(hval,rb.velocity.y);
}
否则如果(FingerMovedPositionFingerInitialPosition)
{
浮动hval=rb.velocity.x;
hval+=19f;
hval*=数学功率(0.5f,时间延迟*10f);
rb.velocity=新矢量2(hval,rb.velocity.y);
}
否则如果(FingerMovedPositionScreen.width/2)
{
对于(int i=0;istartTouchPosition)
{
如果(jumpCount没有嵌套循环,请继续使用FingerTouch
项
此外,在手指被取下时,不要进行比较(这可能会导致延迟),只要通过检查FingerTouch.deltaPosition.y
,在看到手指向上移动时激活它即可:
void FixedUpdate()
{
Debug.Log(jumpCount);
if(transform.position.y < -14) { SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex); }
foreach (Touch FingerTouch in Input.touches)
{
if (FingerTouch.position.x < Screen.width / 2)
{
if (FingerTouch.phase == TouchPhase.Began)
{
FingerInitialPosition = FingerTouch.position.x;
}
else if (FingerTouch.phase == TouchPhase.Moved)
{
FingerMovedPosition = FingerTouch.position.x;
if (FingerMovedPosition > FingerInitialPosition)
{
float hval = rb.velocity.x;
hval += 19f;
hval *= Mathf.Pow(0.5f, Time.deltaTime * 10f);
rb.velocity = new Vector2(hval, rb.velocity.y);
}
else if (FingerMovedPosition < FingerInitialPosition)
{
float hval = rb.velocity.x;
hval -= 19f;
hval *= Mathf.Pow(0.5f, Time.deltaTime * 10f);
rb.velocity = new Vector2(hval, rb.velocity.y);
}
}
else if (FingerTouch.phase == TouchPhase.Ended)
{
FingerInitialPosition = 0f;
FingerMovedPosition = 0f;
}
else //NEW PART!//
{
FingerMovedPosition = FingerTouch.position.x;
if (FingerMovedPosition > FingerInitialPosition)
{
float hval = rb.velocity.x;
hval += 19f;
hval *= Mathf.Pow(0.5f, Time.deltaTime * 10f);
rb.velocity = new Vector2(hval, rb.velocity.y);
}
else if (FingerMovedPosition < FingerInitialPosition)
{
float hval = rb.velocity.x;
hval -= 19f;
hval *= Mathf.Pow(0.5f, Time.deltaTime * 10f);
rb.velocity = new Vector2(hval, rb.velocity.y);
}
}
}
else if (FingerTouch.position.x > Screen.width / 2)
{
if (FingerTouch.deltaPosition.y > 0) {
if (jumpCount<1) {
rb.AddForce(jump * jumpForce, ForceMode2D.Impulse);
jumpCount += 1;
}
}
}
}
}
void FixedUpdate()
{
Debug.Log(jumpCount);
if(transform.position.y<-14){SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);}
foreach(在Input.Touchs中触摸FingerTouch)
{
如果(FingerTouch.position.x<屏幕宽度/2)
{
if(FingerTouch.phase==TouchPhase.Start)
{
FingerInitialPosition=FingerTouch.position.x;
}
否则如果(FingerTouch.phase==TouchPhase.Moved)
{
FingerMovedPosition=FingerTouch.position.x;
如果(FingerMovedPosition>FingerInitialPosition)
{
浮动hval=rb.velocity.x;
hval+=19f;
hval*=数学功率(0.5f,时间延迟*10f);
rb.velocity=新矢量2(hval,rb.velocity.y);
}
否则如果(FingerMovedPositionFingerInitialPosition)
{
浮动hval=rb.velocity.x;
hval+=19f;
hval*=数学功率(0.5f,时间延迟*10f);
rb.velocity=新矢量2(hval,rb.velocity.y);
}
否则如果(FingerMovedPosition