跳躍鍵是自己設定的“K”鍵,用easyTouch里的button改了,可以使用,
但角色移動是用
float h = Input.GetAxis("Horizontal");
Vector3 v = GetComponent<Rigidbody>().velocity;
GetComponent<Rigidbody>().velocity = new Vector3(h*speed,v.y,v.z);
實作的,
系統默認WASD鍵位,不用自己在設定,
角色朝向是用
float x = 1;
if (GetComponent<Rigidbody>().velocity.x > 0.05f)
{
x = -1;
}
else if (GetComponent<Rigidbody>().velocity.x < -0.05f)
{
x = 1;
}
else
{
x = 0;
}
if (x != 0)
{
playerGround.transform.localScale = new Vector3(x, 1, 1);
playerJump.transform.localScale = new Vector3(x, 1, 1);
playerDown.transform.localScale = new Vector3(x, 1, 1);
playerDie.transform.localScale = new Vector3(x, 1, 1);
}
實作的,
想問一下怎么用joystick實作角色的朝向和idle/walk的狀態切換(ps:是個2D橫版游戲)
uj5u.com熱心網友回復:
public void MoveInRightJoyStick(Vector2 weizhi){
//print(weizhi.x + "::" + weizhi.y);
//if (weizhi.y != 0 || weizhi.x != 0) {
//設定角色的朝向(朝向當前坐標+搖桿偏移量)
//transform.LookAt(new Vector3(transform.position.x + weizhi.x, transform.position.y, transform.position.z + weizhi.y));
//影片能得到0 - 1 的值
float x = (weizhi.x / 2) + 0.5f;
float y = (weizhi.y /2) + 0.5f;
anim.SetFloat("Speed", y);
anim.SetFloat("Blend", x); }
}
這個函式放在任何有掛靠場景物體上,給到EasyTouch的搖桿腳本(ETCJoystick)上的MoveEvents的OnMove(Vector2);每次挪動搖桿,都去呼叫此函式;
傳進的是搖桿值(1到-1),也是虛擬軸wsad的值。如果停止了,就在MoveEvents的OnMoveEnd在添加一個函式呼叫
public void MoveInEnd()
{
anim.SetFloat("Speed", 0.5f);
anim.SetFloat("Blend", 0.5f);
}
uj5u.com熱心網友回復:
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/12414.html
標籤:Unity3D
