• Unity 实现简单力场效果


    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 update
        void Start()
        {
            createPos= this.transform.position;
            gravitationPos= this.transform.position;
        }
    
        // Update is called once per frame
        void 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;
        }
    }
  • 相关阅读:
    Elasticsearch 结构化搜索
    KMP 算法
    ElasticSearch 配置
    C++ 入门
    Spark 基础操作
    HBase 与 MapReduce 集成
    iOS面试相关
    iOS开发值得学习的Demo
    Mac系统安装MyEclipse
    linux安装tomcat
  • 原文地址:https://www.cnblogs.com/dj1232090/p/16287336.html
Copyright © 2020-2023  润新知