Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
0
Question by Opoczan · May 14, 2014 at 08:18 PM · pushknockback

Making enemies push player back.

Hi all, I am a beginner in unity programming, and I'm currently making a parkour game. I want to make the enemies move towards player, and push him back. I have a c# script, which makes the enemies rotate to see the me, then move to me. It looks like this: using UnityEngine; using System.Collections;

 public class EnemyAI : MonoBehaviour {
     Transform target; //the enemy's target
     float moveSpeed = 3f; //move speed
     float rotationSpeed = 3f; //speed of turning
      
     Transform myTransform; //current transform data of this enemy
      
     void Awake()
     {
     myTransform = transform; //cache transform data for easy access/preformance
     }
      
     void Start()
     {
     target = GameObject.FindWithTag("Player").transform; //target the player
      
     }
      
     void Update () {
     //rotate to look at the player
     myTransform.rotation = Quaternion.Slerp(myTransform.rotation,
     Quaternion.LookRotation(target.position - myTransform.position), rotationSpeed*Time.deltaTime);
      
     //move towards the player
     myTransform.position += myTransform.forward * moveSpeed * Time.deltaTime;
      
      
     }
 }

I got it from another thread on this forum, but the enemies just approach me and the rotate around me. So, I want to make them push me back. Is there a way to do this (I use the standard 1st person controller and the enemies are cubes, with box colliders. Also, I'd prefer c#, because i started programming with this language.

Comment
Add comment · Show 3
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image Shmulzious · May 14, 2014 at 08:38 PM 0
Share

You need to use something like OnCollisionStay() and have the enemy identify that it collides with you, then it can affect your position until you are not colliding with it -

http://docs.unity3d.com/Documentation/ScriptReference/Collider.OnCollisionStay.html

avatar image robertbu · May 14, 2014 at 08:49 PM 0
Share

If the player is using a CharacterController, you will need to use OnControllerColliderHit() in the script attached to the player.

avatar image Opoczan · May 21, 2014 at 02:04 PM 0
Share

I am happy to see that you are trying to solve my problem, but I need to know exactly how to move the player.

1 Reply

· Add your reply
  • Sort: 
avatar image
0
Best Answer

Answer by CJGames · Dec 11, 2014 at 11:22 PM

Do your enemies have rigidbodys? Cuz if they have, just make sure they don't stop walking forward when they reach the player and they push it autamatically...At least this happens in my game :D

Comment
Add comment · Show 1 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image Opoczan · Dec 14, 2014 at 04:39 PM 0
Share

Thanks my friend, it actually works :D

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

22 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

Player Knockback / PushBack 2 Answers

2D dash/knockback? 1 Answer

Push player in direction based on objects movement 1 Answer

Why is my push rigidbody script not effected by mass? 2 Answers

Unity LocalNotification AlertImage 0 Answers


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges