注:本篇为本人的学习笔记,详情见b站up:Michael-studio
版本信息:unity2020.3
实现内容:敌人左右走动
当然了 ,也会时不时跳一下发个子弹啥的,but咱还没学到那,哎嗨,不会。
纯代码,基本思路就是:给敌人限制一个左右范围,判断-到最左侧了则向右转,往右移动,到最右侧了则向左转,往左移动
转向改transform.localscale,运动改rigidbody.velocity
代码如下
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Enemy_Frog : MonoBehaviour
{
private Rigidbody2D rb;
public float Speed;
private float leftPoint,rightPoint;//左右终止点
private bool faceleft=true;
void Start()
{
rb=GetComponent<Rigidbody2D>();
leftPoint=transform.position.x-2;
rightPoint=transform.position.x+2;
//transform.DetachChildren();//改变该节点的transform时,该节点的孩子不受影响
}
void Update()
{
Movement();
}
void Movement()
{
if(faceleft)
{
rb.velocity=new Vector2(-Speed,rb.velocity.y);
if(transform.position.x<leftPoint)
{
transform.localScale=new Vector3(-1,1,1);
faceleft=false;
}
}else
{
rb.velocity=new Vector2(Speed,rb.velocity.y);
if(transform.position.x>rightPoint)
{
transform.localScale=new Vector3(1,1,1);
faceleft=true;
}
}
}
}
应该还有别的更简单的方法,欢迎留言,because我也想知道
可以看到这里我限制左右是直接写死了,左边就是enemy-2,右边是enemy+2。你可以设为public这样可以随时改
另外一个小ps:
transform.DetachChildren();//改变该节点的transform时,该节点的孩子不受影响