Unity 实现简单力场效果

  • 前言
  • 效果
  • 源码

前言

项目中要用到一个力场的效果,偶然在bilibili中找到了。记录一下。
原视频: https://www.bilibili.com/video/BV18E411M785

效果

源码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class ItemScript4 : MonoBehaviour
{/// <summary>/// 要躲避的物体/// </summary>public Transform center;/// <summary>/// 引力位置/// </summary>public Vector3 gravitationPos = Vector3.zero;/// <summary>/// 出生位置/// </summary>public Vector3 createPos = Vector3.zero;/// <summary>/// 力场影响范围,半径/// </summary>public float forceRadius = 4;/// <summary>/// 斥力/// </summary>public float repulsion;/// <summary>/// 吸引力/// </summary>public float targetAttractive;// Start is called before the first frame updatevoid Start(){createPos= this.transform.position;gravitationPos= this.transform.position;}// Update is called once per framevoid Update(){//速度var velocity = Vector3.zero;//计算跟随物体与力场物体的距离var len = (this.transform.position - center.position).magnitude;  //计算距离//如果距离小于范围,就是处于力场之中if (len < forceRadius){//力场半径-距离/力场半径var rate = (forceRadius - len) / forceRadius;//根据距离来计算力的强度(如果没有这一步,会出现抖动)var intensity = repulsion * rate;//速度要加上这个值velocity += (this.transform.position - center.position) * intensity * Time.deltaTime;  //计算斥力}velocity += (gravitationPos - this.transform.position) * Time.deltaTime * targetAttractive;  //同时计算目标点的引力this.transform.position += velocity;//计算大小,跟随物体与引力中心离的越近越小this.transform.localScale = Mathf.Clamp01((this.transform.position - center.position).magnitude / forceRadius) * Vector3.one;}
}

Unity 实现简单力场效果相关推荐

  1. Unity学习shader笔记[一百零八]简单萤火效果

    之前用粒子系统基于原有萤火虫的粒子改了一波慢萤火效果就被惊艳到了,开始大家讨论,就都觉得这样大数量的粒子消耗挺大的,后面测试过才发现单纯的粒子系统在总粒子数量3000,每秒300的生成数量,屏幕呈现有 ...

  2. Unity ShaderGraph图片发光效果

    Unity ShaderGraph图片发光效果 前言 发光效果(Glow) 原理 ShaderGraph 前言 发光的基本原理,如何给图片施加不同颜色的光 公式讲解部分参考10行代码搞定"热 ...

  3. 如何使用unity制作雷达探测目标效果动画

    如何使用unity制作雷达探测目标效果动画 如何用unity制作动画或者可以展示的软件 因为如今许多制作软件的引擎,虚幻,unity,寒霜等,unity更加便捷. 在官网www.unity3D.com ...

  4. unity实现简单fps游戏功能

    unity实现简单fps游戏鼠标功能 1.unity实现瞄准镜功能 实现原理 按下鼠标右键镜头拉近,再次按下镜头拉远(设置Camrea的FOV属性) 逐渐拉近(例如:60->20逐渐拉近) 设置 ...

  5. Water in Unity 使用Unity提供的水效果

    Water in Unity 使用Unity提供的水效果 需要Standard Asset 和 Pro Standard Asset 使用Standard Assets packages添加白天.夜里 ...

  6. Unity 伤害飘血效果

    Unity 伤害飘血效果 前言 一.效果演示 二.相关代码 前言 一个对于战斗中飘字飘血的功能,比较简单. 一.效果演示 字的颜色没调整好,所以有点不好看. 二.相关代码 根据自定义曲线控制飘字效果 ...

  7. Unity基础:粒子效果面板

    如何在Unity中实现粒子效果? 首先,右键点击 Hierarchy栏,选择effects->Particle System,这样你就新建了一个粒子系统,如图所示: 下面来介绍右侧监视器(Ins ...

  8. unity shader 抖音效果

    最近开始学习了unity shader,所以想要做一些简单的效果,来巩固一下知识.我第一个想做的就是做一些类似于抖音的效果.(PS:最近学习了markdown,所以就用markdown开始写博客了 ) ...

  9. unity ui框架_用unity制作简单的太空游戏(2)-简单炮台

    多铆蒸刚,炮塔至大! 亿万星辰,亿万炮塔! 多铆蒸刚,炮塔至上! 亿万炮塔,亿万荣光! (PS:我没有咕咕咕,就是比较惨,一口气出了半个月的差,人瘦了,也黑了,心塞塞--赶紧写个文章压压惊--) 这一 ...

最新文章

  1. jmeter提取多个变量的多个值_jmeter用一个正则提取器提取多个值的两种方法
  2. 158行代码!程序员复现DeepMind图像生成神器
  3. 从配置服务器说起......
  4. 超大规模商用 K8s 场景下,阿里巴巴如何动态解决容器资源的按需分配问题?
  5. 【百战GAN】如何使用GAN拯救你的低分辨率老照片
  6. 【Linux】一步一步学Linux——arping命令(164)
  7. 49、剑指offer--把字符串转换成整数
  8. Java 8:Lambda表达式与自动关闭
  9. react(97)--分支切换
  10. 鸿蒙开发版智慧生活,华为发布全新分布式鸿蒙OS,打造全场景智慧生活新体验...
  11. 易语言服务端与客户端怎么传送_配置中心是怎么推送的?动手实现一个 Long Polling 长轮询...
  12. 一台2003服务器上怎样设置2个网站,服务器怎样设置多站点 服务器程序 win2003+apache...
  13. Process实操教程 | 中介效应检验
  14. 如何学好高中数学 提高高中数学成绩秒杀技巧(这几点很重要)
  15. 删除的微信好友可以恢复吗?不小心把微信好友删了怎么找回
  16. 数据库系统概念 - 数据模型,关系模型,关系,候选码,主码,外码
  17. 去水印小程序源码【2021年8月更新】
  18. 发送ajax请求接收json数据,ajax接收到的json数据是空的
  19. VSCode中自定义的snippets对h文件无效的解决办法
  20. 推荐免费下载大型酒店管理系统源码

热门文章

  1. python timeit用法_python中的计时器timeit的使用方法
  2. QSettings清空内容
  3. OpenStack虚拟机部署K8S集群,使用Cinder提供PV报错:mount: special device does not exist
  4. Primavera Unifier v19版新特征
  5. Re: cnruby筹划办ruby的电子杂志
  6. 服务器图片加载慢_张云雷开工拍杂志,昕薇服务器一定优化好别崩,手机被卡已三回...
  7. 到处都是才艺表演!!
  8. 成人用品发展前景与走向
  9. java voliate 关键字
  10. atol和stoi的用途