热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

unity3D2D简单的怪物自动寻路

适合2D游戏怪物自动寻路,不会攻击人①首先创建怪物到面板,并添加左右移动坐标点所谓的左右点就是创建两个空对象,拖到需要移动的位置,当怪物的子物体②创建脚本拖到怪物上,将左右移动坐标

适合2D游戏怪物自动寻路,不会攻击人

①首先创建怪物到面板,并添加左右移动坐标点

所谓的左右点就是创建两个空对象,拖到需要移动的位置,当怪物的子物体

②创建脚本拖到怪物上,将左右移动坐标点物体拖入对应位置

效果

代码部分

1 using System.Collections;
2 using System.Collections.Generic;
3 using UnityEngine;
4
5 public class monster_frog : MonoBehaviour
6 {
7 public Rigidbody2D rb; //怪物刚体
8 public Transform pos_left, pos_right; //怪物移动左右坐标
9 public float speed; //移动速速
10 public bool faceLeft = true; //脸朝向
11 public float leftx, rightx; //存储怪物移动左右坐标点
12
13 // Start is called before the first frame update
14 void Start()
15 {
16 rb = GetComponent();
17 //断绝当前对象的子父级关系,这样做是为了让子物体的坐标不跟随父物体一起移动
18 transform.DetachChildren();
19 //获取坐标
20 leftx = pos_left.position.x;
21 rightx = pos_right.position.x;
22 //卸磨杀驴,节省资源
23 Destroy(pos_left.gameObject);
24 Destroy(pos_right.gameObject);
25 }
26
27 // Update is called once per frame
28 void Update()
29 {
30 move();
31 }
32
33 //移动
34 void move()
35 {
36 //如果脸朝左
37 if (faceLeft)
38 {
39 //就朝左移动,y轴不变
40 rb.velocity = new Vector2(-speed, rb.velocity.y);
41
42 //如果当前坐标小于左侧坐标
43 if (transform.position.x 44 {
45 //掉头 -1是往右看
46 transform.localScale = new Vector3(-1, 1, 1);
47 faceLeft = false;
48 }
49 }
50 //如果脸朝右
51 else
52 {
53 //则向右移动
54 rb.velocity = new Vector2(speed, rb.velocity.y);
55
56 //掉头,往左
57 if (transform.position.x > rightx)
58 {
59 transform.localScale = new Vector3(1, 1, 1);
60 faceLeft = true;
61 }
62 }
63 }
64 }

补充:

怪物需要的组件有:

Rigidbody2D

Circle Collider 2D 圆形碰撞器 目的是不让怪物摔倒

剩下就可以添加对应的动画效果

实现后的效果



推荐阅读
  • iOS绘制就是采集点,贝塞尔曲线得到形状,绘图上下文去渲染出来AsanaDrawsana图形库,设计的挺好他可以画多种图形, ... [详细]
  • 本文详细介绍了 org.apache.commons.io.IOCase 类中的 checkCompareTo() 方法,通过多个代码示例展示其在不同场景下的使用方法。 ... [详细]
  • 对象自省自省在计算机编程领域里,是指在运行时判断一个对象的类型和能力。dir能够返回一个列表,列举了一个对象所拥有的属性和方法。my_list[ ... [详细]
  • 本文探讨了如何使用pg-promise库在PostgreSQL中高效地批量插入多条记录,包括通过事务和单一查询两种方法。 ... [详细]
  • 在现代Web应用中,当用户滚动到页面底部时,自动加载更多内容的功能变得越来越普遍。这种无刷新加载技术不仅提升了用户体验,还优化了页面性能。本文将探讨如何实现这一功能,并介绍一些实际应用案例。 ... [详细]
  • 反向投影技术主要用于在大型输入图像中定位特定的小型模板图像。通过直方图对比,它能够识别出最匹配的区域或点,从而确定模板图像在输入图像中的位置。 ... [详细]
  • 在创建新的Android项目时,您可能会遇到aapt错误,提示无法打开libstdc++.so.6共享对象文件。本文将探讨该问题的原因及解决方案。 ... [详细]
  • 本文介绍了一个SQL Server自定义函数,用于从字符串中提取仅包含数字和小数点的子串。该函数通过循环删除非数字字符来实现,并附带创建测试表、存储过程以演示其应用。 ... [详细]
  • 本文详细解析了Java中hashCode()和equals()方法的实现原理及其在哈希表结构中的应用,探讨了两者之间的关系及其实现时需要注意的问题。 ... [详细]
  • 本文介绍如何在Spring Boot项目中集成Redis,并通过具体案例展示其配置和使用方法。包括添加依赖、配置连接信息、自定义序列化方式以及实现仓储接口。 ... [详细]
  • 2018-2019学年第六周《Java数据结构与算法》学习总结
    本文总结了2018-2019学年第六周在《Java数据结构与算法》课程中的学习内容,重点介绍了非线性数据结构——树的相关知识及其应用。 ... [详细]
  • 本文介绍了Kettle资源库的基本概念、类型及其管理方法,同时探讨了Kettle的不同运行方式,包括图形界面、命令行以及API调用,并详细说明了日志记录的相关配置。 ... [详细]
  • 本文介绍了Android开发中Intent的基本概念及其在不同Activity之间的数据传递方式,详细展示了如何通过Intent实现Activity间的跳转和数据传输。 ... [详细]
  • PHP 过滤器详解
    本文深入探讨了 PHP 中的过滤器机制,包括常见的 $_SERVER 变量、filter_has_var() 函数、filter_id() 函数、filter_input() 函数及其数组形式、filter_list() 函数以及 filter_var() 和其数组形式。同时,详细介绍了各种过滤器的用途和用法。 ... [详细]
  • 优雅实现 jQuery 折叠展开下拉菜单
    本文介绍了一种使用 jQuery 实现的优雅折叠和展开效果的下拉菜单,通过简单的 HTML 结构和 CSS 样式,结合 jQuery 脚本,可以轻松创建出美观且功能强大的下拉菜单。 ... [详细]
author-avatar
用户t59kdjdcr6
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有