using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class enemy_flog : Enemy
{
private Rigidbody2D rb;
// private Animator anim;
private Collider2D Coll;
public LayerMask Ground;
public Transform leftpoint, rightpoint;
public float leftx, rightx;//设定2个浮点型
private bool Faceleft = true;//面朝向
public float Speed, JumpForce;
// protected Collider2D DisColl1;
protected override void Start()
{
base.Start();
//通过base获得父级的Start
rb = GetComponent<Rigidbody2D>();
anim = GetComponent<Animator>();
Coll = GetComponent<Collider2D>();
transform.DetachChildren();//断绝父项目和子项目的关系
leftx = leftpoint.position.x;
rightx = rightpoint.position.x;
//已获得坐标点,删除
Destroy(leftpoint.gameObject);
Destroy(rightpoint.gameObject);
}
void Update()
{
// Movement();由于动画触发事件设置了触发Movement(),所以不用写。默认是idle。
SwithAnim();
}
void Movement()
{
if (Faceleft)
{
if (Coll.IsTouchingLayers(Ground) && (transform.position.x >= leftx))
{
anim.SetBool("jumping", true);
rb.velocity = new Vector2(-Speed, JumpForce);
}
if (transform.position.x < leftx)
{
transform.localScale = new Vector3(-1, 1, 1);//Vector2也可以。
Faceleft = false;
}
}
else
{
if (Coll.IsTouchingLayers(Ground) && (transform.position.x <= rightx))
{
anim.SetBool("jumping", true);
rb.velocity = new Vector2(Speed, JumpForce);
}
if (transform.position.x > rightx)
{
transform.localScale = new Vector3(1, 1, 1);//Vector2也可以。
Faceleft = true;
}
}
}
void SwithAnim()
//切换动画。单独写一个函数,名为SwithAnim
{
if (anim.GetBool("jumping") == true)//(默认是true)
{
if ((rb.velocity.y < 0.1) && !Coll.IsTouchingLayers(Ground))
{
anim.SetBool("jumping", false);
anim.SetBool("falling", true);
}
}
if (anim.GetBool("falling") == true)
{
if ((rb.velocity.y == 0) && Coll.IsTouchingLayers(Ground))
{
anim.SetBool("falling", false);
}
}
}
}
enemy_flog
最新推荐文章于 2023-01-25 20:14:20 发布