Chuyển động robot:Điều khiển nhảy, xoay người
using UnityEngine;
using System.Collections;
public class Robot : MonoBehaviour {
bool xoayNguoi = true;
[SerializeField]
float maxSpeed = 10f;
[SerializeField]
float jumpForce = 400f;
[SerializeField]
LayerMask whatIsGround;
Transform groundCheck;
float groundedRadius = .2f;
bool grounded = false;
Transform ceilingCheck;
float ceilingRadius = .01f;
Animator anim;
void Awake ()
{
groundCheck = transform.Find("GroundCheck");
ceilingCheck = transform.Find("CeilingCheck");
anim = GetComponent<Animator>();
}
void Update ()
{
}
void FixedUpdate ()
{
grounded = Physics2D.OverlapCircle(groundCheck.position, groundedRadius, whatIsGround);
print (grounded);
anim.SetBool("Ground", grounded);
anim.SetFloat("vSpeed", rigidbody2D.velocity.y);
}
public void Move(float move, bool jump ,bool crouch)
{
if(!crouch && anim.GetBool("Crouch"))
{
if( Physics2D.OverlapCircle(ceilingCheck.position, ceilingRadius, whatIsGround))
{
crouch = true;
}
}
anim.SetBool("Crouch", crouch);
if(grounded)
{
anim.SetFloat("Speed", Mathf.Abs(move));
//di chuyển
rigidbody2D.velocity = new Vector2(move * maxSpeed, rigidbody2D.velocity.y);
// nhấn trái phải RoBot xoay mặt sang trái phải
if(move > 0 && !xoayNguoi)
Flip();
else if(move < 0 && xoayNguoi)
Flip();
}
if (grounded && jump) {
anim.SetBool("Ground", false);
rigidbody2D.AddForce(new Vector2(0f, jumpForce));
}
}
void Flip ()
{
xoayNguoi = !xoayNguoi;
Vector3 theScale = transform.localScale;
theScale.x *= -1;
transform.localScale = theScale;
}
}
Download tại "Kho"Sửa bởi người viết 28/11/2014 lúc 08:12:51(UTC)
| Lý do: Chưa rõ