Operator `+' cannot be applied to operands of type `UnityEngine.Vector3' and `int'

for a space ship game, i’m trying to make it so when an ally collides with an enemy it recoils off the enemy but this error keeps coming up.

using UnityEngine;
using System.Collections;

public class allyAI : MonoBehaviour {
	private GameObject aenemy;
	private Transform aenemyTransform;
	public float allySpeed;
	public int allyhealth = 100;
	private int shipCollideRecoil = 50;
	// Use this for initialization
	void Awake () {

	}
	
	// Update is called once per frame
	void Update () {
		aenemy = GameObject.FindWithTag("enemy");
		aenemyTransform = aenemy.transform;

		transform.position = Vector3.MoveTowards (transform.position, aenemy.transform.position, allySpeed);
		transform.LookAt(aenemyTransform);

		if (allyhealth < 0){
			Destroy(this.gameObject);


			}
	
	}
  void OnCollisionEnter (Collision collide){
				if (collide.gameObject.tag == "enemy") {
						SubAmount (10);
			transform.position = new Vector3 (transform.position,transform.position + shipCollideRecoil, transform.position); //error appears here//
				}
		}

		void SubAmount(int numtoSub){
		allyhealth -= numtoSub;
}
}

also while i am at it i might as well ask, how do you make an object move towards another random object with the same tag “enemy”? because there is multiple enemies and the allies keep going after one ship.

In the line with the error you are trying to add a Vector3 and an integer value in the second argument of your new Vector3(). One more mistake is that you are also providing Vector3 value as an argument to all the three values of a Vector3.

You are doing something like:

Vector3(Vector3, Vector3, Vector3);

You need to change your line with error to:

transform.position = new Vector3 (transform.position.x,transform.position.y + shipCollideRecoil, transform.position.z);