/// <summary> /// 蝙蝠のFixedUpdate /// </summary> protected override void EnemyUpdate() { int layer = LayerName.GetXMoveHitLayer(); if (Physics.BoxCast(enemyCenterPos, boxSize, tPos - transform.position, new Quaternion(0, 0, 0, 0), boxRaySize, layer, QueryTriggerInteraction.Ignore)) { moveDir = -moveDir; tPos = new Vector3(transform.position.x, stPos.y, transform.position.z) + new Vector3(moveDir * moveXSize, Mathf.Sin(sinNam) * upNam, 0); } Debug.DrawRay(enemyCenterPos, (tPos - transform.position) * boxRaySize, Color.blue, 0.2f); if (transform.position == tPos) { sinNam += sinSpeed; tPos = new Vector3(transform.position.x, stPos.y, transform.position.z) + new Vector3(moveDir * moveXSize, Mathf.Sin(sinNam) * upNam, 0); } transform.position = Vector3.MoveTowards(transform.position, tPos, moveSpeed); }
protected override void EnemyUpdate() { base.EnemyUpdate(); if (Physics.BoxCast(enemyCenterPos, boxSize, Vector3.right * moveDir, new Quaternion(0, 0, 0, 0), boxRaySize, LayerName.GetXMoveHitLayer(), QueryTriggerInteraction.Ignore)) { moveDir = -moveDir; ChackMoveDir(); } else { transform.position += new Vector3(moveSpeed * moveDir, 0, 0); } if (count == createTime) { count = 0; CreateGameobj(); } count++; }
/// <summary> /// 天使のFixedUpdate /// </summary> protected override void EnemyUpdate() { if (down)//降下 { if (Physics.BoxCast(enemyCenterPos, rayBoxSize, Vector3.down, new Quaternion(0, 0, 0, 0), downRaySize, LayerName.GetObjectHitLayer(), QueryTriggerInteraction.Ignore)) { down = false; downSizeCount = 0; } else { transform.position += Vector3.down * moveSpeed; downSizeCount += moveSpeed; if (downSizeCount >= downSize) { down = false; downSizeCount = 0; } } } else//左右移動 { RaycastHit hit; if (Physics.BoxCast(enemyCenterPos, rayBoxSize, new Vector3(moveDir, 0, 0), out hit, new Quaternion(0, 0, 0, 0), raySize, LayerName.GetXMoveHitLayer(), QueryTriggerInteraction.Ignore)) { if (hit.transform.CompareTag("enemy")) { //反転 moveDir = -moveDir; } else if (hit.transform.CompareTag("wall") || hit.transform.CompareTag("blockObj")) { //降下 down = true; moveDir = -moveDir; } } else { transform.position += new Vector3(moveSpeed * moveDir, 0, 0); } } }
protected override void EnemyUpdate() { base.EnemyUpdate(); if (loopObj != null) { GetComponent <Rigidbody>().useGravity = false; GetComponent <Rigidbody>().velocity = new Vector3(0, 0, 0); RaycastHit hit; if (BlockRayHit(enemyCenterPos, blockHitBoxScale, -rotateObj.transform.up, out hit)) { loopObj = hit.transform.gameObject; transform.position += -rotateObj.transform.right * moveSpeed * moveDir; if (RotateRayHit(enemyCenterPos, rayBoxScale, -rotateObj.transform.right, out hit)) { loopObj = hit.transform.gameObject; moveNam += 4 - moveDir; moveNam %= 4; rotateObj.transform.eulerAngles = rotates[moveNam]; transform.position = hit.point + (rotateObj.transform.up * addP); Debug.Log("壁移り"); } } else { moveNam += 4 + moveDir; moveNam %= 4; rotateObj.transform.eulerAngles = rotates[moveNam]; transform.position += -rotateObj.transform.right * moveSpeed * 3 * moveDir; if (BlockRayHit(enemyCenterPos, blockHitBoxScale, -rotateObj.transform.up, out hit)) { transform.position = hit.point + (rotateObj.transform.up * addP); Debug.Log("壁回転 : 座標調整"); loopObj = hit.transform.gameObject; } else { loopObj = null; } Debug.Log("壁回転"); } } else { rotateObj.transform.eulerAngles = rotates[0]; GetComponent <Rigidbody>().useGravity = true; RaycastHit hit; if (Physics.BoxCast(enemyCenterPos + new Vector3(0, 0.1f, 0), rayBoxScale, Vector3.down, out hit, Quaternion.Euler(rotates[0]), blockHitRay, LayerName.GetObjectHitLayer(), QueryTriggerInteraction.Ignore)) { if (hit.transform.CompareTag("wall") || (hit.transform.CompareTag("endWall"))) { if (Physics.BoxCast(enemyCenterPos, rayBoxScale, new Vector3(grMoveDir, 0, 0), Quaternion.Euler(rotates[0]), rotateRaySize, LayerName.GetXMoveHitLayer(), QueryTriggerInteraction.Ignore)) { grMoveDir = -grMoveDir; } transform.position += new Vector3(grMoveDir * moveSpeed, 0, 0); } else { loopObj = hit.transform.gameObject; moveNam = 0; GetComponent <Rigidbody>().velocity = new Vector3(0, 0, 0); transform.position = hit.point + (rotateObj.transform.up * addP); } } } }