public static GrappleMotion Create(GameObject parent, Rigidbody charBody, Collider charCollider) { GrappleMotion motion = parent.GetComponent <GrappleMotion>(); if (motion == null) { motion = parent.AddComponent <GrappleMotion>(); } motion._charBody = charBody; motion._charCollider = charCollider; if (motion._charBody.GetComponent <LineRenderer>() == null) { motion.lineRender = motion._charBody.gameObject.AddComponent <LineRenderer>(); } else { motion.lineRender = motion._charBody.GetComponent <LineRenderer>(); } motion.lineRender.SetPosition(0, motion._charBody.transform.position); motion.lineRender.SetPosition(1, motion._charBody.transform.position); motion.lineRender.positionCount = 2; motion.lineRender.startWidth = motion.lineRender.endWidth = 0.15f; motion.lineRender.material = new Material(Shader.Find("Sprites/Default")); motion.lineRender.startColor = motion.lineRender.endColor = Color.black; return(motion); }
void Init() { if (_charBody == null) { _charBody = gameObject.GetComponent <Rigidbody>(); } _charBody.isKinematic = true; if (_charCollider == null) { _charCollider = gameObject.GetComponent <Collider>(); } if (!_charMotions.ContainsKey(CharState.Freefalling)) { _charMotions.Add(CharState.Freefalling, FreefallMotion.Create(this.gameObject, _charBody, _charCollider)); } if (!_charMotions.ContainsKey(CharState.Walking)) { _charMotions.Add(CharState.Walking, WalkMotion.Create(this.gameObject, _charBody, _charCollider)); } if (!_charMotions.ContainsKey(CharState.Grappling)) { _charMotions.Add(CharState.Grappling, GrappleMotion.Create(this.gameObject, _charBody, _charCollider)); } }