// Start is called before the first frame update void Start() { targetObject = GameObject.Find("seed"); targetTag = "seed"; rb = GetComponent <Rigidbody2D>(); spiderStateEnum = SpiderStateEnum.wait; originPosition = transform.position; }
protected void OnTriggerEnter2D(Collider2D collision) { if (spiderStateEnum == SpiderStateEnum.rushToSeed && collision.tag == targetTag) { ColliderObject colliderObject = collision.GetComponent <ColliderObject>(); colliderObject.RemoveCollider(); colliderObject.rb.transform.SetParent(transform, true); spiderStateEnum = SpiderStateEnum.moveBack; } }
// Update is called once per frame void Update() { switch (spiderStateEnum) { case SpiderStateEnum.wait: if (targetObject.transform.position.y < transform.position.y && targetObject.transform.position.y > transform.position.y - detectHeightRange && targetObject.transform.position.x > transform.position.x - detectWidthRange && targetObject.transform.position.x < transform.position.x + detectWidthRange && !web.caughtSeed) { spiderStateEnum = SpiderStateEnum.rushToSeed; targetY = targetObject.transform.position.y - 1; } break; case SpiderStateEnum.rushToSeed: rb.MovePosition(transform.position + -Vector3.up * moveDownSpeed * Time.deltaTime); if (transform.position.y < targetY) { spiderStateEnum = SpiderStateEnum.moveBack; } break; case SpiderStateEnum.moveBack: rb.MovePosition(transform.position + Vector3.up * moveUpSpeed * Time.deltaTime); if (transform.position.y >= originPosition.y) { ColliderObject colliderObject = targetObject.GetComponent <ColliderObject>(); colliderObject.RecoverCollider(); colliderObject.rb.transform.SetParent(null, true); spiderStateEnum = SpiderStateEnum.end; } break; } }